sql - 如何将 XML 插入 SQL

标签 sql sql-server xml sql-server-2008

我尝试将 XML 文件添加到 SQL 2008。

我的 XML:

<ItemList>
    <Section Index="0" Name="cat0">
        <Item Index="0" Slot="0" />
        <Item Index="1" Slot="0" />
    </Section>
    <Section Index="1" Name="cat1">
        <Item Index="33" Slot="0" />
        <Item Index="54" Slot="0" />
    </Section>
        <Section Index="2" Name="cat2">
        <Item Index="55" Slot="0" />
        <Item Index="78" Slot="0" />
    </Section>
</ItemList>

SQL 列:

Name = Section Name,
Cat = Section Index,
Index = Item Index,
Slot = Item Slot.

我的例子:

DECLARE @input XML = 'MY XML file'

SELECT
      Name = XCol.value('@Index','varchar(25)'),
      Cat = XCol.value('@Name','varchar(25)'),
      [Index] = 'Unknown', /* Index from <Item>*/
      Slot = 'Unknown' /* Slot from <Item> */
FROM @input.nodes('/ItemList/Section') AS test(XCol)

我不知道如何从“Item”添加值。

非常感谢!

最佳答案

你可以这样做:

select
  Name = XCol.value('../@Index','varchar(25)'),
  Cat = XCol.value('../@Name','varchar(25)'),
  [Index] = XCol.value('@Index','varchar(25)'),
  Slot = XCol.value('@Slot','varchar(25)')
from
  @input.nodes('/ItemList/Section/Item') AS test(XCol)

关键思想:将数据更深一层,不是 /ItemList/Section,而是 /ItemList/Section/Item。因此,在这种情况下,您可以通过指定 ../@ 访问 Item 的属性,也可以访问父元素(在您的情况下为 Section)的属性属性名称

关于sql - 如何将 XML 插入 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29894979/

相关文章:

java - 带有 Spring boot jpa 错误 : "Unable to extract OUT/INOUT parameter value" 的 SQL 服务器过程调用

java - 如何创建一个允许 NULL 值与 Hibernate 注释的唯一约束?

sql-server - SQL Server 中的 "with (nolock)"是什么?

java - JAXB2,如何根据包含 xsd :any element? 的 XML 架构进行部分验证

sql - INSERT 或 SELECT 策略总是返回一行?

mysql - 不重复获取记录条数

android - 如何在 Android 中以编程方式创建菜单?

xml - vb.net-从XSD创建类并生成xml

sql - 数字 ID 与字符串 ID

PHP MySQL查询按1个月之前的日期显示表的当前日期