使用 SQL Server 2005 XQuery 从 XML 获取分隔字符串 [英] Get a delimited string from XML with SQL Server 2005 XQuery

查看:31
本文介绍了使用 SQL Server 2005 XQuery 从 XML 获取分隔字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我似乎无法仅使用 SQL Server 2005 XQuery 从 XML 文档中获取 [逗号-] 分隔的字符串.

I cannot seem to get a [comma-]delimited string out of an XML doc using just SQL Server 2005 XQuery.

我有:

<AAA>
  <Name>Name_A</Name>
  <Value>Val_A</Value>
</AAA>
<AAA>
  <Name>Name_B</Name>
  <Value>Val_B</Value>
</AAA>
<AAA>
  <Name>Name_C</Name>
  <Value>Val_C</Value>
</AAA>
... (etc.)

... 并且想要获得 Val_A,Val_B,Val_C... - 一个逗号分隔的字符串.

... and would like to get Val_A,Val_B,Val_C... - a comma-delimited string.

我可以使用 FOR XML 转换为表格然后返回字符串,但我认为有一种直接的方法.

I can convert to a table then back to string with FOR XML, but thought there is a direct way.

谢谢.

推荐答案

怎么样 - 这将适用于 XML 变量中任意数量的 节点:

How about this - this will work for any number of <AAA> nodes in an XML variable:

DECLARE @Input XML = '<AAA>
  <Name>Name_A</Name>
  <Value>Val_A</Value>
</AAA>
<AAA>
  <Name>Name_B</Name>
  <Value>Val_B</Value>
</AAA>
<AAA>
  <Name>Name_C</Name>
  <Value>Val_C</Value>
</AAA>'

SELECT
    STUFF(
    (SELECT 
        ',' + AAA.value('(Value)[1]', 'varchar(20)')
     FROM
        @Input.nodes('/AAA') AS Node(AAA)
     FOR XML PATH('')
    ), 1, 1, '')

输出为:

Val_A,Val_B,Val_C

这篇关于使用 SQL Server 2005 XQuery 从 XML 获取分隔字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆