1

我是使用 SQL Server 2008 R2 的 XML 新手,我有一个名为 EventData 的 xml 数据列,xml 的结构如下...

<eventData>
  <Name> Mr Blog</Name>
  <Description> Hello World />
  <Date>10/06/2013</Date> 
</eventData>

我需要的是 eventData 的每个子元素都在这样存储的表中

Key           Value
Name          Mr Blog
Description   Hello World
Date          10/06/2013

我阅读了上一个问题,但没有解决我的问题,因为我的子元素是动态的,并且它们每次都不相同。

关于如何构建我的查询来实现这一点的任何想法?

4

1 回答 1

1

这个怎么样?

DECLARE @input XML = '<eventData>
  <Name> Mr Blog</Name>
  <Description> Hello World </Description>
  <Date>10/06/2013</Date> 
</eventData>'

SELECT
    Name = XNodes.value('local-name(.)', 'varchar(100)'),
    VALUE = XNodes.value('(.)[1]', 'varchar(200)')
FROM @input.nodes('/eventData/*') AS XTbl(XNodes)

这给了我一个输出:

在此处输入图像描述

它是完全动态的,因为它将列出您拥有的任何子节点<eventData>及其价值。

于 2013-06-14T10:22:44.323 回答