在SQL Server中解析XML,以表格格式返回

时间:2017-05-23 10:09:38

标签: sql-server sql-server-2008 xpath sql-server-2012 xquery

XML看起来像这样:

<Attributes>
<ProductAttribute ID="92">
    <ProductAttributeValue>
        <Value>225</Value>
    </ProductAttributeValue>
</ProductAttribute>
<ProductAttribute ID="536">
    <ProductAttributeValue>
        <Value>227</Value>
    </ProductAttributeValue>
</ProductAttribute>

我需要

ID  - Value
92  - 225
536 - 227

表格式。

是否可以直接从查询或存储过程或函数中获取此值?

1 个答案:

答案 0 :(得分:0)

您可以对{xml

使用value()nodes方法
DECLARE @xml XML = N'<Attributes>
<ProductAttribute ID="92">
    <ProductAttributeValue>
        <Value>225</Value>
    </ProductAttributeValue>
</ProductAttribute>
<ProductAttribute ID="536">
    <ProductAttributeValue>
        <Value>227</Value>
    </ProductAttributeValue>
</ProductAttribute>
</Attributes>'

SELECT ID = x.t.value('(./@ID)[1]','int'),
       Value = x.t.value('(./ProductAttributeValue/Value)[1]','int') 
FROM @xml.nodes('/Attributes/ProductAttribute') AS x(t)

返回

ID  Value
---------
92  225
536 227