Sql server 使用SQL选择单个xml节点
我有一个包含许多节点的大型XML注释 是否有一种方法可以从较大的XML中仅选择单个节点及其所有内容 我使用的是sql 2005如果要获取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&
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。。