这个看起来很简单,但我必须遗漏一些东西......
鉴于此SQL:
declare @xml XML
set @xml =
'<people>
<person>
<name>Matt</name>
<surname>Smith</surname>
<person>
<person>
<name>John</name>
<surname>Doe</surname>
<person>
</people>'
如何获得包含以下内容的表格?
people
----------------------------------------------------------------------
<person>\n <name>Matt</name>\n <surname>Smith</surname>\n <person>
<person>\n <name>John</name>\n <surname>Doe</surname>\n <person>
ie:将整个节点作为nvarchar(NNN)元素抓取,而不仅仅是它们的名称,属性或值?
我尝试过使用node(),text(),fn:node(),fn:text(),blah blah等...还在努力!
答案 0 :(得分:2)
Crikey,我想我已经回答了我自己的问题......
SELECT
pref.query('.') as PersonSkills
FROM
@xml.nodes('/*/*') AS People(pref)
答案 1 :(得分:2)
此外,如果有人感兴趣,这里是查询的扩展,它只返回根节点的直接子节点,如果它们自己有子节点,则返回xml:
SELECT
pref.query('.') as XmlExtract
FROM
@xml.nodes('/*/*') AS extract(pref)
WHERE
pref.value('./*[1]', 'nvarchar(10)') IS NOT NULL