【问题标题】:Convert xml to Key Value pair SQL Server将 xml 转换为键值对 SQL Server
【发布时间】:2015-01-06 09:51:41
【问题描述】:

我在 SQL Server 2012 中有一个带有结构的 xml 列

<root>
  <person>
    <firstName>Jon</firstName>
    <lastName>Johnson</lastName>
  </person>

我怎样才能像这样检索数据

Key        | Value  
-------------------------------------------------------------------
First Name | Jon
Last Name  | Johnson

【问题讨论】:

  • 您将能够相当容易地获得“firstName”、“lastName”等键。如果你真的需要“名字”和“姓氏”,这会变得更混乱。

标签: xml sql-server-2012


【解决方案1】:

试试这样的:

DECLARE @input TABLE (ID INT NOT NULL, XmlData XML)

INSERT INTO @input VALUES(1, '<root>
  <person>
    <firstName>Jon</firstName>
    <lastName>Johnson</lastName>
  </person></root>')

select
    XC.value('local-name(.)', 'varchar(50)'),
    XC.value('(.)[1]', 'varchar(50)')
FROM
    @input
CROSS APPLY
    XmlData.nodes('/root/person/*') AS XT(XC)
WHERE
    ID = 1

通过在/nodes/person/* XPath 上使用CROSS APPLY,您基本上可以获得一个XML 片段的伪表——&lt;person&gt; 的每个子元素对应一个。使用local-name(.) 获取XML 元素的名称,使用. 获取该XML 元素的值。

【讨论】:

  • 非常感谢马克。这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多