Tôi có ghi chú XML lớn với nhiều nút.chọn nút xml riêng lẻ bằng cách sử dụng SQL
có cách nào để tôi chỉ có thể chọn một nút và tất cả nội dung của nó từ XML lớn hơn không?
tôi đang sử dụng sql 2005
Tôi có ghi chú XML lớn với nhiều nút.chọn nút xml riêng lẻ bằng cách sử dụng SQL
có cách nào để tôi chỉ có thể chọn một nút và tất cả nội dung của nó từ XML lớn hơn không?
tôi đang sử dụng sql 2005
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>
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
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
@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. –