我有一个存储在xml列中的数据,需要以逗号分隔的子节点列表。使用下面的脚本,我只能获得“A B C”。请帮助我使用xquery获取“A,B,C”(用逗号简单替换空格没有用,因为我们的数据中包含空格)。
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
答案 0 :(得分:8)
试试这个:
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
- 这对你有用吗?
答案 1 :(得分:0)
在一个完全抱怨的XQuery处理器中你可以使用:
(/fd/field[@i=22])[1]/string-join(*,',')