2017-11-24 11 views
0

長いリストのテキストをコンマで区切って複数の行結果セットに変換する必要があります。SQL Serverを使用してコンマ区切りのテキストを複数の列に変換します

これは、他のテーブルとの外部結合で使用されます。

(テーブルが、Excelシート内の外部文字列ではありません)問題の文字列:

'A', 'B', 'C', .... 
クエリ

Output 
----- 
'A' 
'B' 
'C' 

期待出力私がいる間、一時テーブルを使用しないようにしようとしています上記の解決策を達成する。

可能であればお勧めします。

+1

がhttps://stackoverflow.com/questions/5493510/turning-a-の第二の答えを参照します個々の行にカンマ区切り文字列 –

+0

テーブル内の複数の列にこれらの文字列があってもうまくいくと思います。しかし、私の場合、私は変換する必要のある外部テキスト(csvファイル)のリストを持っています。 この場合、その解決策が有効かどうかは不明です。 –

答えて

2

あなた

DECLARE @CommValues NVARCHAR(MAX) = '''A'', ''B'', ''C''' 


SELECT 
     LTRIM(A.value('.', 'NVARCHAR(MAX)')) [Comma Values] FROM 
(
    SELECT CAST('<X>'+REPLACE(@CommValues, ',', '</X><X>')+'</X>' AS XML) AS Comm 
) X CROSS APPLY Comm.nodes('/X') as comm(a) 

結果を助けることができるいくつかのxmlノード方法試してみてください。

Comma Values 
'A' 
'B' 
'C' 
+0

これは実際には機能しますが、クエリーが遅すぎるため、カンマ区切りのテキスト(約500,000)のリストが非常に長いため応答しません。 小さなデータセットで動作しますが、私の場合は動作しません。 ありがとう、 –

+0

Sqlサーバーのバージョンは10.50 –

+0

Microsoft SQL Server 2008 R2(SP3) - 10.50.6529.0(X64) –

関連する問題