T-SQL

Převod seznamu hodnot s oddělovačem do tabulky pomocí XML

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

Leave a Reply

Your email address will not be published.