質問

T-SQLに初心者の質問があります。

ExcelシートをSQL Server 2008にインポートしました。これらのExcelファイルは、本来の形式にフォーマットされていませんでした。電話番号は、「012345678」のようになります。先頭と末尾に空白がなく、内部に空白がありません。さらに悪いことに、数字は接頭辞「0123-2349823」または「0123/2349823」でエンコードされます。

通常、Excelファイルを CSV ファイルにエクスポートしてから、クリーニングを実行してからExcelファイルを再インポートするマジックPerlスクリプト。

それでも、T-SQLでこのようなことを行う方法を知ることは興味深いでしょう。

アイデアはありますか

役に立ちましたか?

解決

次のようなもの

replace(replace(rtrim(ltrim('0123-2349823')), '-', ''), '/', '')

動作するはずです。きれいに見えません。 ;)

他のヒント

私はそれを更新して、SQLの 'Replace'およびLTrim / RTrim関数を使用します。

Update Table1
set phonenum = Case
        When phonenum like '%-%' Then LTrim(RTrim(Replace(phonenum, '-', '')))
            Else LTrim(RTrim(Replace(phonenum, '/', '')))
        End

"クリーニング済み"数値のみが含まれています

電話番号に"-"、" /"が含まれているかどうかに応じて、それらを空の文字列に置き換えます。

create table #t ( tel varchar(30) )

insert  #t select '0123-2349823' 
insert  #t select '0123/2349823'

select  tel,
        replace(tel, 
            case
                when patindex('%-%', tel) > 0 then '-'
                when patindex('%/%', tel) > 0 then '/'
            end, '') as Cleaned
from    #t
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top