首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中用逗号分隔XML节点

在SQL中用逗号分隔XML节点
EN

Stack Overflow用户
提问于 2019-11-08 09:24:06
回答 2查看 43关注 0票数 1

我有一个这样的专栏内容:

CustomTags

代码语言:javascript
复制
<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,得到如下结果

代码语言:javascript
复制
Visas and travelExplore OptionsConsider – feasibility

但我希望结果有一个逗号分隔的标记(在同一列中),如下所示:

代码语言:javascript
复制
Visas and travel,Explore Options,Consider – feasibility

理想情况下,我希望通过使用XML功能/节点来实现这一点,而不是将其分解为+ ',‘+或coalesce

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-11 06:41:47

应该在不使用交叉应用的情况下实现

代码语言:javascript
复制
STUFF((SELECT ',' + x.t.value('.', 'varchar(50)') FROM 
[g].CustomTags.nodes('//tag') x(t) FOR XML PATH('')), 1, 1, '') AS 'Custom Tags'
票数 1
EN

Stack Overflow用户

发布于 2019-11-08 13:52:33

你可以在这里How Stuff and 'For Xml Path' work in Sql Server这个答案。

请在下面尝试

代码语言:javascript
复制
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, '')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58759127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档