在SQL中以逗号分隔XML节点

我的列内容如下:

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功能/节点来实现 而不是将其分成+','+或合并

zhaojiewww 回答:在SQL中以逗号分隔XML节点

您可以参考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,'')
,

应该是这样,而不使用交叉应用

STUFF((SELECT ',' + x.t.value('.','varchar(50)') FROM 
[g].CustomTags.nodes('//tag') x(t) FOR XML PATH('')),'') AS 'Custom Tags'
本文链接:https://www.f2er.com/3140779.html

大家都在问