从 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?