[英]How do I get a comma-delimited list of strings from an XML column in T-SQL?
假设有一个包含两列的表 (SQL Server 2019)。 两者都是 nvarchar 但ResultDoc
列恰好存储 xml。 示例数据:
姓名 | 结果文档 |
---|---|
山姆 | <doc><results><result>a</result><result>b</result><result>x</result></results></doc> |
简 | <doc><results><result>c</result><result type="pending">z</result><result>m</result><result>k</result></results></doc> |
我希望能够查询此表,过滤 xml,并获得如下结果:
姓名 | 结果 |
---|---|
山姆 | 一,乙,X |
简 | c, 米, k |
我已经看到对单个文档执行此操作的示例,但是我无法将这样的解决方案应用于对多行执行此操作的查询。
更新...将聚合移到 OUTER APPLY
由于您是 2019 年,您可以使用string_agg()
示例或dbFiddle
Select A.Name
,C.Results
From YourTable A
Outer Apply ( values (try_convert(xml,[ResultDoc]) ) )B(xmlData)
Outer Apply (
Select Results = string_Agg(xn.value('./text()[1]', 'nvarchar(150)'),',')
From xmlData.nodes('doc/results/result') C(xn)
Where coalesce(xn.value('@type[1]', 'nvarchar(150)'),'') not in ('pending')
) C
结果
Name Results
Jan c,m,k
Sam a,b,x
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.