Klasický problém, který řešíme téměř každý den je, jak si převést seznam hodnot oddělených čárkou nebo jiným znakem z textového řetězce do tabulkového formátu, abychom s daty mohli dále pracovat. Jednou z možností je využití schopností T-SQL jazyka pro práci s XML daty. Náš testovací řetězec si jednoduše pomocí REPLACE() převedeme na řetězec ve formátu XML, která následně pomocí NODES() funkce převedeme na data v tabulárním formátu:
DECLARE @var NVARCHAR(MAX) DECLARE @xml XML SET @var = '1,2,3,4,5' SET @xml = N'<root><r>' + REPLACE(@var,',','</r><r>') + '</r></root>' SELECT [t].[value]('.','int') AS [Id] FROM @xml.[nodes]('//root/r') AS [a]([t]) GO
Od verze SQL Server 2016 (compatibility level = 130) už naštěstí nemusíme podobný scénář absolvovat a stačí využití novou funkci pro parsování řetězců STRING_SPLIT():
DECLARE @var NVARCHAR(MAX) SET @var = '1,2,3,4,5' SELECT * FROM STRING_SPLIT(@var, ',') GO