[SQL Server] String mit Komma separierte Liste in Zeilen transformieren

Thomas Darimont

Erfahrenes Mitglied
Hallo,

hier mal ein Beispiel wie man in SQL Server mittels CTE einen String der eine Kommaseparierte Liste enthält in Zeilen umwandeln kann.

SQL:
WITH initial_data AS
  (SELECT 
	-1				   AS sep_idx,
    ''                 AS item ,
    '1,20,333,4444,55' AS data,
    ','                AS separator
  ) ,
  vals(sep_index,item, data, separator) AS
  (SELECT sep_idx,
    CAST(item AS           VARCHAR(255)),
    CAST(data+separator AS VARCHAR(4000)),
    separator
  FROM initial_data
  UNION ALL
  SELECT charindex(separator,data,0) ,
    CAST(LEFT(data,charindex(separator,data,1)-1) AS VARCHAR(255)) ,
    CAST(RIGHT(data,LEN(data)-charindex(separator,data,1)) AS VARCHAR(4000)) ,
    separator
  FROM vals
  WHERE charindex(separator,data,0) > 0
  )
SELECT item FROM vals WHERE sep_index >= 0 OPTION (MAXRECURSION 0)

Ausgabe:
Code:
item
------
1
20
333
4444
55

Hier noch ein weiteres Beispiel zu der Arbeit mit CTE's im SQL Server:
http://www.tutorials.de/relationale...-spass-mit-rekursiven-ctes-im-sql-server.html


Gruß Tom
 

Neue Beiträge

Zurück