2016-12-15 6 views
0

私は(00から00066)SQL表でこれを選択して、後のちょうど>>>>>変換またはキャストvchar文字なしintに「 - 」または -

のように、この(0000066)

を変換します必要

declare @v1 varchar(21) = '00-00066', --- I need ignore this character '-' 
    @v2 varchar(21) = '000 -  66 ', 
    @v3 varchar(21) = '00-66' + char(13) + char(10), 
    @v4 varchar(21) = char(9) + '66000-00' 

選択キャスト(@ v1のintとして) - (intとして@ v2)はエラー 選択キャスト - エラー(int型など@ V3) 選択キャスト - エラー(intとして@ V4) 選択のキャスト - エラー

+0

intに変換すると正面のゼロが消えます。なぜなら、_ replace(@ v1、 ' - '、 '') – Kostya

答えて

1

DigitsOnlyEEがこの問題のために特別に開発されました。それは私が見たどんな機能よりも速くなります。あなたは、提供されたリンクからコードを作成するだけでコードを取得する必要があります。

ここにそれがどのように動作するかの簡単な例です:

SELECT DigitsOnly FROM dbo.DigitsOnlyEE('000 -  66 '); 

結果:

00066 

テーブルに対して使用するには:

-- sample data 
DECLARE @table TABLE (oldString varchar(100)); 
INSERT @table VALUES ('00-00066'),('000 -  66 '), 
('00-66' + char(13) + char(10)), (char(9) + '66000-00'); 

-- solution 
SELECT oldString, DigitsOnly 
FROM @table 
CROSS APPLY dbo.DigitsOnlyEE(oldString); 

結果:

enter image description here

関連する問題