按属性值过滤XML查询

时间:2013-06-11 22:37:06

标签: sql xml tsql xpath xquery

我正在尝试从xml字段中提取参数,但似乎无法弄清楚如何通过参数的name属性过滤我的参数。

XML

<parameters>
    <parameter name="id">
        <item>2</item>
    </parameter>
    <parameter name="channel">
        <item>retail</item>
        <item>wholesale</item>
    </parameter>
</parameters>

我正在尝试提取int 2并在随后的查询中提取零售和批发。

我已经看到它在网上做了很多不同的方式,但似乎没有一个对我有用。任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:4)

试试这个:

declare @x xml = '<parameters>
    <parameter name="id">
        <item>2</item>
    </parameter>
    <parameter name="channel">
        <item>retail</item>
        <item>wholesale</item>
    </parameter>
</parameters>'

select t.s.value('.', 'nvarchar(max)')
from @x.nodes('//parameter[@name = "id"]/item') t(s)

返回以下表格:

2