2017-03-09 44 views
1

我在sql表中有一個電話號碼,我想添加前綴'0',其中電話號碼是10位數, 但是如果它小於10或大於10位數,則不需要0前綴。電話號碼字符串中的前綴0 SQL

7863176061 
7724269820 
2088076157 
1992762084 
1318912 

輸出

07863176061 
07724269820 
02088076157 
01992762084 
1318912 
+0

這聽起來像你存儲使用不合適的數據類型的電話號碼。你不會用電話號碼做數學運算,或者進行數字比較。這意味着它們不應該存儲在數字列中,而應該存儲爲*字符串* - 如果您願意,可以使用一個約束來確保它只包含數字。一旦你使用了正確的數據類型,存儲前導零就成爲可能,然後你不必編寫代碼來「糾正」電話號碼。 –

回答

0

使用CASE表達以檢驗T他的長度。

查詢

select 
    case when len([phone_number]) = 10 
    then '0' + cast([phone_number] as varchar(20)) 
    else cast([phone_number] as varchar(20)) end 
from [your_table_name]; 

Find demo here

你必須投中的電話號碼列爲varchar如果列數據類型爲BIGINT。否則,您可以在上述查詢中排除演員角色。

1

試試這個:

select 
    case when len(yourcolumn) =10 
    then '0'+ yourcolumn 
    else yourcolumn end as column 
from yourtable 
1

試試這個

SELECT CASE LEN(Num) WHEN 10 THEN '0'+cast(Num as varchar(11)) ELSE Num END AS Num 
0

我認爲這將是快速,

select 

    '0' + cast([phone_number] as varchar(20)) 

from [your_table_name] 
where len([phone_number]) = 10 ;