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



## Thomas Darimont (8. Juni 2012)

Hallo,

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


```
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:

```
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


----------

