2017-11-24 1 views
0

Ich habe eine Anforderung, bei der ich eine lange Liste von Text (durch Komma getrennt) in mehrere Zeile Ergebnismenge konvertieren muss.Konvertieren von kommagetrennten Text in mehrere Spalten Ergebnis mit SQL Server

Dies würde dann in einer äußeren Verbindung mit einer anderen Tabelle verwendet werden.

Problem string (die nicht in der Tabelle, sondern eine externe Zeichenfolge in einer Excel-Tabelle):

'A', 'B', 'C', .... 

Erwartete Ausgang der Abfrage

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

ich mit temporären Tabellen zu vermeiden versuchen, während obige Lösung erreichen.

Bitte schlagen Sie vor, wenn es möglich ist.

+1

Siehe die zweite Antwort von der https://stackoverflow.com/questions/5493510/turning-a- comma-separated-string-in-individual-rows –

+0

Ich denke, das würde funktionieren, wenn ich diese Zeichenfolge in mehreren Spalten in einer Tabelle hätte. Aber in meinem Fall habe ich eine Liste von externem Text (csv-Datei), die ich konvertieren muss. Nicht sicher, ob diese Lösung in diesem Fall funktionieren würde. –

Antwort

2

einige xml Knoten Methode Versuchen Sie, die Sie

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) 

Ergebnis helfen könnte:

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

Das funktioniert tatsächlich, aber Abfrage ist zu langsam und reagiert nicht, da ich eine sehr lange Liste von kommagetrennten Text (ca. 500.000) habe. Es funktioniert mit kleinen Datensätzen, funktioniert aber in meinem Fall nicht. Danke, –

+0

Sql-Serverversion ist 10.50 –

+0

Microsoft SQL Server 2008 R2 (SP3) - 10.50.6529.0 (X 64) –

Verwandte Themen