2016-08-31 6 views
1

私は2つの値を格納する列を持っています。以下の例:varcharカラムを特定の文字で「動的に」分割するにはどうすればよいですか?

|      Column 1       | 
|some title1 =ExtractThis ; Source Title12 = ExtractThis2| 

私は別の列に1列と「ExtractThis2」に「ExtractThis」を削除します。私は部分文字列を使用しようとしましたが、列1のデータが可変であり、したがって常に意図した値を切り出すわけではないため、機能しません。以下のSQL:

SELECT substring(d.Column1,13,24) FROM dbo.Table d 

これは 'Extract This'を返しますが、他の列では大きすぎるか小さすぎます。キャラクターを一貫して分割する機能や機能の組み合わせはありますか?これは私の長さのカウントとは異なり、私のコラムで一貫しています。

答えて

0
select substring(col1,CHARINDEX('=',col1)+1,CHARINDEX (';',col1)-CHARINDEX ('=',col1)-1) Val1, 
     substring(col1,CHARINDEX('=',col1,CHARINDEX (';',col1))+1,LEN(col1)) Val2 
from #data 

各行に5から3まで減らすことができる重複計算があります。 しかし、私はこの単純な最適化がSQL Serverによって行われたと考えています。

+0

私の友人は天才です!その問題はしばらく私を悩ませています。ありがとう! – user6780741

関連する問題