Это мой пример XML:конкатенации значений XML при выборе с помощью XQuery в T-SQL
<root>
<element>
<subelement>
<value code="code1">value1</value>
<value code="code2">value2</value>
</subelement>
</element>
</root>
И это мой тест запрос:
DECLARE @tempTable TABLE (
ValueCode nvarchar(MAX),
Value nvarchar(MAX)
)
DECLARE @xml XML
select @xml = cast(c1 as xml) from OPENROWSET (BULK 'C:\test.xml', SINGLE_BLOB) as T1(c1)
INSERT INTO @tempTable
SELECT
Tbl.Col.value('subelement[1]/@code', 'NVARCHAR(MAX)'),
Tbl.Col.value('subelement[1]', 'NVARCHAR(MAX)')
FROM @xml.nodes('//element') Tbl(Col)
SELECT * FROM @tempTable
Запрос, при выполнении выдает строка с столбцом ValueCode, содержащим NULL, и столбец Value, содержащий значение «value1value2». То, что я хотел бы получить, будет атрибутами и значениями, объединенными с разделителем. Например, мне нужно, чтобы ValueCode содержал 'code1; code2 'и Value, чтобы содержать' значение 1; значение2' . Как я могу это достичь?