从 SQL Server 列中获取 XML 节点作为逗号分隔列表 [英] Get XML nodes from SQL Server column as comma-separated list

查看:38
本文介绍了从 SQL Server 列中获取 XML 节点作为逗号分隔列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据存储在 xml 列中,需要一个逗号分隔的子节点列表.使用下面的脚本,我只能得到A B C".请帮助我使用 xquery 获取A、B、C"(简单地用逗号替换空格无济于事,因为我们的数据里面有空格).

I have a data stored in a xml column and need a comma-separated list of child nodes. Using script below, I can only get "A B C". Please help me get "A,B,C" using xquery (Simple replace of space with comma does not help because we have data with spaces inside).

create table Temp12345 (col1 xml)
go

insert into Temp12345 (col1)
values('<fd><field i="22"><v>A</v><v>B</v><v>C</v></field></fd>')
go

select col1.value('(/fd/field[@i=22])[1] ', 'NVarchar(Max)') 
from Temp12345
go

drop table Temp12345
go

推荐答案

试试这个:

SELECT
    STUFF((SELECT 
              ',' + fd.v.value('(.)[1]', 'varchar(10)')
           FROM 
              Temp12345
           CROSS APPLY
              col1.nodes('/fd/field/v') AS fd(v)
           FOR XML PATH('')
          ), 1, 1, '')

这给了我 A,B,C - 它也适合你吗?

This gives me A,B,C - does it work for you, too?

这篇关于从 SQL Server 列中获取 XML 节点作为逗号分隔列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆