我有一个这样的专栏内容:
CustomTags
<CustomTagsSerialiser>
<custom-tags>
<tag>Visas and travel</tag>
<tag>Explore Options</tag>
<tag>Consider – feasibility</tag>
</custom-tags>
</CustomTagsSerialiser>我可以将g.CustomTags.value('(/CustomTagsSerialiser//custom-tags)1',‘nvarchar(500)’查询为Custom_Tag,得到如下结果
Visas and travelExplore OptionsConsider – feasibility但我希望结果有一个逗号分隔的标记(在同一列中),如下所示:
Visas and travel,Explore Options,Consider – feasibility理想情况下,我希望通过使用XML功能/节点来实现这一点,而不是将其分解为+ ',‘+或coalesce
发布于 2019-11-11 06:41:47
应该在不使用交叉应用的情况下实现
STUFF((SELECT ',' + x.t.value('.', 'varchar(50)') FROM
[g].CustomTags.nodes('//tag') x(t) FOR XML PATH('')), 1, 1, '') AS 'Custom Tags'发布于 2019-11-08 13:52:33
你可以在这里How Stuff and 'For Xml Path' work in Sql Server这个答案。
请在下面尝试
SELECT
STUFF((SELECT
',' + CTS.tag.value('(.)[1]', 'nvarchar(500)')
FROM
Temp12345
CROSS APPLY
col1.nodes('/CustomTagsSerialiser/custom-tags/tag') AS CTS(tag)
FOR XML PATH('')
), 1, 1, '')https://stackoverflow.com/questions/58759127
复制相似问题