【问题标题】:Parse XML in SQL Server, Return in Table Format在 SQL Server 中解析 XML,以表格格式返回
【发布时间】:2017-05-23 10:09:38
【问题描述】:

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

表格格式。

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

【问题讨论】:

  • MS Docs 有一篇关于 XML 数据和 SQL Server 的文章,您可能会觉得这篇文章很有用。
  • 您查看文档了吗?他们有一整章介绍了存储和解析 XML、查询、转换等。你有什么具体问题吗?
  • 我已经检查过了,但无法建立与我想要的表结构相同的查询。

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


【解决方案1】:

您可以对 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多