Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
Sql server 使用SQL选择单个xml节点_Sql Server_Sql Server 2005_Xquery Sql - Fatal编程技术网

Sql server 使用SQL选择单个xml节点

Sql server 使用SQL选择单个xml节点,sql-server,sql-server-2005,xquery-sql,Sql Server,Sql Server 2005,Xquery Sql,我有一个包含许多节点的大型XML注释 是否有一种方法可以从较大的XML中仅选择单个节点及其所有内容 我使用的是sql 2005如果要获取XML的一部分,应该使用 declare @XML xml set @XML = ' <root> <row1> <value>1</value> </row1> <row2> <value>2</value> </row2&

我有一个包含许多节点的大型XML注释

是否有一种方法可以从较大的XML中仅选择单个节点及其所有内容

我使用的是sql 2005

如果要获取XML的一部分,应该使用

declare @XML xml

set @XML = 
'
<root>
  <row1>
    <value>1</value>
  </row1>
  <row2>
    <value>2</value>
  </row2>
</root>
'

select @XML.query('/root/row2')
结果:

<row2>
  <value>2</value>
</row2>
2
(No column name)
1
2
(No column name)
<row><value>1</value></row>
<row><value>2</value></row>
更新:

如果要将XML拆分为多行,请使用

要获取值,请执行以下操作:

declare @XML xml

set @XML = 
'
<root>
  <row>
    <value>1</value>
  </row>
  <row>
    <value>2</value>
  </row>
</root>
'

select T.N.value('value[1]', 'int')
from @XML.nodes('/root/row') as T(N)
要获取整个XML,请执行以下操作:

select T.N.query('.')
from @XML.nodes('/root/row') as T(N)
结果:

<row2>
  <value>2</value>
</row2>
2
(No column name)
1
2
(No column name)
<row><value>1</value></row>
<row><value>2</value></row>
(无列名)
1.
2.

nice,如果每个行节点都是,并且我希望按顺序获取每个行节点,该怎么办?我希望结果(2)不是整数,但我希望获取第1行xml块,然后是第2行。。。总的来说rows@kacalapy-更新了关于如何将XML分解为多行的答案。请注意,节点方法示例的XML与上面第一个示例的XML进行了比较。。i、 e.不同的XML。。