2012-01-03 222 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