2011-01-12 27 views
10

Tôi cố gắng để phân tích cú pháp xml dưới đây trong máy chủ sql để có được tất cả 3 IdXML Parsing với truy vấn SQL

<Configuration> 
    <ID>1000</ID> 
    <ID>1001</ID> 
    <ID>1002</ID> 
</Configuration> 

bằng cách sử dụng truy vấn

SELECT CONFIGURATION.value('/', 'varchar(200)') as SID FROM SCHEDULE 

đang nhận được kết quả như 100.010.011.002 nhưng tôi muốn có kết quả trong một cột hoặc ở định dạng CSV.

bất kỳ trợ giúp nào sẽ được đánh giá cao.

+0

Bạn đang sử dụng máy chủ cơ sở dữ liệu nào? – Nekresh

+1

Bạn có thay đổi giản đồ không? vì sẽ dễ dàng hơn nếu các ID đó nằm trong các hàng riêng biệt trong một bảng, tức là phân tích cú pháp XML trước khi chèn dữ liệu vào bảng. – Mark

+0

Nếu dữ liệu của bạn được lưu trữ dưới dạng XML, bạn nên sử dụng trình phân tích cú pháp XML thay vì cố gắng viết một bằng tay. Nếu bạn không cần nó là XML, hãy sử dụng một định dạng đơn giản hơn. – Borealid

Trả lời

8

Sử dụng MS SQL Server, thao tác này sẽ cung cấp cho bạn các hàng.

declare @xml as xml 
set @xml = 
'<Configuration> 
    <ID>1000</ID> 
    <ID>1001</ID> 
    <ID>1002</ID> 
</Configuration>' 

select 
    x.i.value('.', 'int') as ID 
from @xml.nodes('/Configuration/ID') as x(i) 

Nếu bạn chỉ cần một giá trị như trong ví dụ này nó là nhanh hơn rất nhiều (ba lần) băm nhỏ vào nút text().

select 
    x.i.value('.', 'int') as ID 
from @xml.nodes('/Configuration/ID/text()') as x(i)