2012-01-03 107 views

回答

24

您应该使用query() Method,如果你希望得到您的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> 

如果你想从一个特定节点的值,你应该使用value() Method

select @XML.value('(/root/row2/value)[1]', 'int') 

结果:

2 

更新:

如果你想你的XML分解到您使用nodes() Method多行。

要获取值:

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) 

结果:

(No column name) 
1 
2 

要得到整个XML:

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

结果:

(No column name) 
<row><value>1</value></row> 
<row><value>2</value></row> 
+0

不错,如果每个行节点只是,我想要依次获取每个行节点? – kacalapy 2012-01-03 21:20:00

+0

我想要的结果()不是整数,但我想ROW1 XML块,然后2行......所有行 – kacalapy 2012-01-03 21:22:37

+0

@kacalapy - 随你怎么XML分解到多行更新了答案。 – 2012-01-03 21:27:45