回答

收藏

如何查询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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则