2012-01-03 35 views

Trả lời

24

Bạn nên sử dụng query() Method nếu bạn muốn nhận được một phần của XML của bạn.

declare @XML xml 

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

select @XML.query('/root/row2') 

Kết quả:

<row2> 
    <value>2</value> 
</row2> 

Nếu bạn muốn giá trị từ một nút cụ thể mà bạn nên sử dụng value() Method.

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

Kết quả:

2 

Cập nhật:

Nếu bạn muốn băm nhỏ XML của bạn để nhiều hàng bạn sử dụng nodes() Method.

Để có được giá trị:

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) 

Kết quả:

(No column name) 
1 
2 

Để có được toàn bộ XML:

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

Kết quả:

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

tốt đẹp, nếu mỗi nút hàng chỉ là và tôi muốn nhận được mỗi nút hàng tuần tự? – kacalapy

+0

tôi muốn kết quả () không phải là số nguyên nhưng tôi muốn lấy hàng1 xml đoạn, sau đó row2 ... cho tất cả các hàng – kacalapy

+0

@kacalapy - Cập nhật câu trả lời với cách bạn băm nhỏ XML thành nhiều hàng. –

Các vấn đề liên quan