如何查询SQL Server XML列并返回特定节点的所有值?
技术问答
220 人阅读
|
0 人回复
|
2023-09-12
|
我在SQL Server的XML列中有以下XML。0 y8 Q! G" W, t4 H& m6 p$ L! d
111 a match was not found 222 a match was found 333 error 如何编写TSQL用逗号分隔的字符串返回限定符/限定符/消息中的所有值?我的目标是在每行的单列中返回查询XML中的值。1 ~. O8 V/ q3 ?, ]
结果如下:( o( B, Y/ W0 |/ P2 I' _$ G
"a match was not found,a match was found,error"
, `) a8 k) b( L/ x$ q; v( H 解决方案:
6 |: R% F( T2 [4 x; | SQLFiddle相似之处:建议遵循@xQbert的解决方案- v( y9 j, e l5 P7 K5 Q$ e$ e
create table Temp (col1 xml)goinsert into Temp (col1)values(' 111 a match was not found 222 a match was found 333 error ')goSELECT STUFF((SELECT ' fd.v.value('(.)[1]','varchar(50) FROM Temp CROSS APPLY col1.nodes('/qualifiers/qualifier/message') AS fd(v) FOR XML PATH1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1 |
|
|
|
|
|