选择XML节点在T-SQL
问题描述:
这一个看起来很简单,但我必须失去了一些东西... XML选择XML节点在T-SQL
鉴于这种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>
即:抓取整个节点作为nvarchar的(NNN)的元件,而不仅仅是它们的名称,属性或值?我试过使用节点(),文本(),FN:节点(),FN:文本(),等等等等......还有!
答
此外,如果有人有兴趣,这里是一个扩展,只返回根节点的直接子节点查询,如xml,如果他们自己有子节点:
SELECT
pref.query('.') as XmlExtract
FROM
@xml.nodes('/*/*') AS extract(pref)
WHERE
pref.value('./*[1]', 'nvarchar(10)') IS NOT NULL
答
Crikey,我想我已经再次回答我自己的问题......
SELECT
pref.query('.') as PersonSkills
FROM
@xml.nodes('/*/*') AS People(pref)