ranio Ответов: 1

Как преобразовать значения узлов XML в значения, разделенные запятыми в SQL?


Я хочу преобразовать значения узлов XML в значения, разделенные запятыми в SQL.

Что я уже пробовал:

DECLARE @PersonsXml XML = 
'<ROOT><FILETYPE>PEN</FILETYPE><FILETYPE>REM</FILETYPE><FILETYPE>SAL</FILETYPE></ROOT>'

--SELECT  b.value('(./firstName/text())[1]','nvarchar(max)') as FirstName, b.value('(./lastName/text())[1]','nvarchar(max)') as LastName
--FROM @PersonsXml.nodes('/persons/person') AS a(b)


DECLARE @ConcatString VARCHAR(MAX)

SELECT @ConcatString = COALESCE(@ConcatString + ', ', '') + Code
FROM (
SELECT  b.value('(./FILETYPE/text())[2]','nvarchar(max)') as Code
--, b.value('(./lastName/text())[1]','nvarchar(max)') as LastName
FROM @PersonsXml.nodes('/ROOT') AS a(b)
)as TBL

1 Ответов

Рейтинг:
0

RDBurmon

это довольно просто-

DECLARE @PersonsXml XML = 
'<ROOT><FILETYPE>PEN</FILETYPE><FILETYPE>REM</FILETYPE><FILETYPE>SAL</FILETYPE></ROOT>'
 

SELECT @list = ISNULL( @list + ',', '' ) + x.y.value('.', 'VARCHAR(MAX)' )  
FROM @PersonsXml.nodes('ROOT/FILETYPE') x(y)  


смотрите этот блог-
SQL xml: получить xml-значения в CSV?[^]