2009-10-14 20 views

Trả lời

29

Sử dụng FOR XML trong truy vấn của bạn.

ví dụ: select * from table1 FOR XML AUTO

thấy điều này ->http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1265579,00.html

Ngoài ra, bạn có thể tạo XML của riêng bạn trong mã t-sql của bạn thông qua con trỏ hoặc trong mã ứng dụng của bạn, cách còn làm việc đó.

+0

Cảm ơn bạn, Bhaskardeep Khaund! Điều đó đã giải quyết được vấn đề của tôi. –

+1

Liên kết trong câu trả lời này yêu cầu tư cách thành viên để xem. – Gibron

36

Và nếu bạn cần kiểm soát nhiều hơn cách XML kết quả, hãy xem câu hỏi FOR XML PATH mới trong SQL Server 2005 và mới hơn.

Một tuyên bố như thế này (dựa trên cơ sở dữ liệu Northwind khét tiếng):

SELECT 
    CustomerID as "@CustomerID", 
    CompanyName, 
    Address as "address/street", 
    City as "address/city", 
    Region as "address/region", 
    PostalCode as "address/zip", 
    Country as "address/country", 
    ContactName as "contact/name", 
    ContactTitle as "contact/title", 
    Phone as "contact/phone", 
    Fax as "contact/fax" 
FROM Customers 
FOR XML PATH('Customer') 

sẽ dẫn đến một kết quả như thế này:

<Customer CustomerID="ALFKI"> 
    <CompanyName>Alfreds Futterkiste</CompanyName> 
    <address> 
     <street>Obere Str. 57</street> 
     <city>Berlin</city> 
     <zip>12209</zip> 
     <country>Germany</country> 
    </address> 
    <contact> 
     <name>Maria Anders</name> 
     <title>Sales Representative</title> 
     <phone>030-0074321</phone> 
     <fax>030-0076545</fax> 
    </contact> 
    </Customer> 

Đó là khá khó khăn để có được bất kỳ cách nào khác ... .

Marc

+0

Làm cách nào để làm ngược lại, nghĩa là chuyển đổi XML trở lại bảng –

+0

@RaihanIqbal: xem xét hỗ trợ XQuery dựng sẵn trong T-SQL - sử dụng '.query()', '.nodes()' và '.value () ', bạn chắc chắn có thể làm điều đó - nhưng đó là một câu hỏi hoàn toàn khác :-) –

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