2017-03-07 4 views
1

インポート時にExcelファイルからゼロがない郵便番号があります。だから私は4桁の郵便番号の前に0を連結するために選択をしていた。SQLサーバーにゼロを連結します。選択値は4桁で表示されます。5

私はこれをしようとしていたが、それはまだ

(0 + [ZIP]) as 'fullzip' 

ZIPあなたは0どれを使用している

dbテーブルに私の完全なSQL

SELECT 
    TOP 1000 
    [ZIP] 
    ,(0 + [ZIP]) as 'fullzip' 
    ,[ZIP_Name] 
    ,[ZIP_CountyFIPS] 
    ,[ZIP_County] 
    ,[ZIP_State] 
    ,[Utility_Name] 
    ,[Holding_Company] 
    ,[Utility_ID] 
    ,[GAS_LDC_Type] 
    ,[ELEC_Non_IOU_Type] 
    ,[Percent_of_Overlap] 
    ,[Utility_Territory_Type] 
FROM 
    cc.dbo.ServiceableZipCodes 
WHERE 
    Len([ZIP]) = 4 
+1

「Zip」列の種類は? – Dai

+0

> ZIPはdbテーブルの浮動小数点数です –

+1

郵便番号が浮動小数点として格納されているのはなぜですか? 'LEN()'を使うのは意味がありません。なぜなら、数値には「長さ」がないからです。 – Dai

答えて

1

、私はに変換したい:あなたはリテラル'0'代わりに、整数リテラル0の文字列を使用し、代わりに暗黙的に代わり追加を可能にする連結を強制的にCONCAT機能を使用する必要があり、安全であるためにchar、 次に文字列mathを実行します。

右( '00000' +変換(VARCHAR(5)、ZIP)、5)

は4桁の最小値を想定していません。

+0

すでに5桁の郵便番号がある場合は、そのまま残しますか?例えばそれが85226なら、それは085226をするつもりはありません、そうですか?どうも –

-1

フロートである4桁の数字を出してくれる文字列値ではなく整数リテラルです。私は暗黙の変換が整数にあなたのzipを変換していると思う、そして、0(これは非操作です)を追加することです、文字列連結をするのではなく。ジップはフロートがある場合

SELECT 
    CONCAT('0', [Zip]) AS [FullZip], 
    -- etc 
+0

'' CONCAT 'は認識された組み込み関数名ではありません。 ''たぶんSQLサーバは古すぎますか? –

+0

@JeremyMillerどのような互換性レベルですか? SQL Server 2012に「CONCAT」(互換レベル '110')が追加されました。あるいは、 '+'を使用して、すべてのオペランドを 'varchar' /' nvarchar'に明示的にキャストしてください。 – Dai

+0

どこで見つけたらいいですか?私はgoogle ...私は新しい会社で始めました、そして、彼らは古いsqlサーバーデータベースの束を持っていると思います。 –

0

あなたは暗黙の型変換を使用することができます別のオプション(変換する必要はありません)

Declare @YourTable table (Zip float) 
Insert Into @YourTable values 
(12345), 
(1234), 
(123) 

Select right('00000'+left(Zip,5),5) 
From @YourTable 

戻り

(No column name) 
12345 

0
0

の代わりにvarchar型にZIP変換、私はcast instead as it is ANSI standardを使用します。

SELECT 
    TOP 1000 
    [ZIP] 
    ,ZipCode = CASE WHEN LEN(oa_zip.fullzip) = 4 then '0' + oa_zip.fullzip ELSE oa_zip.fullzip END 
    ,[ZIP_Name] 
    ,[ZIP_CountyFIPS] 
    ,[ZIP_County] 
    ,[ZIP_State] 
    ,[Utility_Name] 
    ,[Holding_Company] 
    ,[Utility_ID] 
    ,[GAS_LDC_Type] 
    ,[ELEC_Non_IOU_Type] 
    ,[Percent_of_Overlap] 
    ,[Utility_Territory_Type] 
FROM 
    cc.dbo.ServiceableZipCodes 
OUTER APPLY (SELECT fullzip = CAST(ZIP AS VARCHAR)) oa_zip 
関連する問題