Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择XML节点作为T-SQL中的XML_Sql_Sql Server_Xml_Sql Server 2005 - Fatal编程技术网

选择XML节点作为T-SQL中的XML

选择XML节点作为T-SQL中的XML,sql,sql-server,xml,sql-server-2005,Sql,Sql Server,Xml,Sql Server 2005,这个看起来很简单,但我肯定错过了什么 鉴于此SQL: declare @xml XML set @xml = '<people> <person> <name>Matt</name> <surname>Smith</surname> <person> <person> <name>John</name> <surname>

这个看起来很简单,但我肯定错过了什么

鉴于此SQL:

declare @xml XML
set @xml =
'<people>
  <person>
    <name>Matt</name>
    <surname>Smith</surname>
  <person>
  <person>
    <name>John</name>
    <surname>Doe</surname>
  <person>
</people>'
declare@xml
set@xml=
'
马特
史密斯
约翰
雌鹿
'
您将如何获得包含以下内容的表:

people
----------------------------------------------------------------------
      <person>\n        <name>Matt</name>\n        <surname>Smith</surname>\n      <person>
      <person>\n        <name>John</name>\n        <surname>Doe</surname>\n      <person>
人
----------------------------------------------------------------------
\n马特\n史密斯\n
\n约翰\n多伊\n
ie:将整个节点作为nvarchar(NNN)元素,而不仅仅是它们的名称、属性或值


我试过使用node(),text(),fn:node(),fn:text(),等等。。。努芬

哎呀,我想我又回答了我自己的问题了

SELECT
    pref.query('.') as PersonSkills
FROM  
    @xml.nodes('/*/*') AS People(pref)

此外,如果有人感兴趣,这里有一个查询扩展,它只返回根节点的直接子节点,如果它们本身有子节点,则返回xml:

SELECT
    pref.query('.') as XmlExtract
FROM  
    @xml.nodes('/*/*') AS extract(pref)
WHERE
    pref.value('./*[1]', 'nvarchar(10)') IS NOT NULL