2017-03-09 10 views
1

私はSQLテーブルの電話番号を持っていますが、電話番号が10桁の場合はプレフィックス '0'を追加したい場合は ですが、10未満または10桁を超える場合プレフィクスは必要ありません。電話番号の文字列のプレフィックス0 SQL

7863176061 
7724269820 
2088076157 
1992762084 
1318912 

出力

07863176061 
07724269820 
02088076157 
01992762084 
1318912 
+0

、高速になると思います。あなたは電話番号で数学をしたり、数値比較をしたりしません。つまり、数値列に格納するのではなく、*文字列*として格納する必要があります。必要に応じて、数字だけを含むようにする制約があります。正しいデータ型を使用すると、先行ゼロを格納することが可能になり、電話番号を「修正」するコードを書く必要がなくなります。 –

答えて

0

使用CASE表現してみてください彼の長さ。あなたは、列のデータ型がBIGINTである場合はVARCHARに電話番号の列をキャストする必要があり

クエリ

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

。それ以外の場合は、上記のクエリでキャスト部分を除外できます。

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 ;