我假设我的问题的答案将是一些我自己无法弄清楚的简单问题。这是场景:
我正在使用 SQL Server 2008 R2,其中一个表有一个 XML 列,其中数据以以下格式保存:
<Person>
<firstName>John</firstName>
<lastName>Lewis</lastName>
</Person>
该Person
节点可以有任意数量的子节点,其元素名称可能不同(事先不知道)。我正在寻找一个查询来返回一个 XML,该 XML 具有所有节点的值作为属性。
所以上述 XML 的输出应该是:
<Person firstName="John" lastName="Lewis"/>
我想不出一个查询来获得上述输出。我不想使用类似的查询
Select
PersonColumn.value('(/Person/firstName)[1]', 'varchar(100)') AS '@firstName'
, PersonColumn.value('(/Person/lastName)[1]', 'varchar(100)') AS '@lastName'
FROM MyTable
WHERE MyTable.MyPrimaryKey=1
FOR XML PATH('Person'), TYPE
因为我不知道节点下可能有哪些Person
节点。