Thêm một cột có NULL làm giá trị để tạo một nút mục riêng cho mỗi cột.
SELECT
t.col1 as 'item'
,NULL
,t.col2 as 'item'
,NULL
,t.col3 as 'item'
FROM dbo.tbl as t
FOR XML PATH('parent'), TYPE;
Kết quả:
<parent>
<item>1</item>
<item>2</item>
<item>3</item>
</parent>
SQL Fiddle
Tại sao điều này hoạt động?
Các cột không có tên được chèn dưới dạng các nút văn bản. Trong trường hợp này, giá trị NULL được chèn dưới dạng nút văn bản giữa item
các nút.
Nếu bạn thêm các giá trị thực thay vì NULL, bạn sẽ thấy điều gì đang xảy ra.
SELECT
t.col1 as 'item'
,'1'
,t.col2 as 'item'
,'2'
,t.col3 as 'item'
FROM dbo.tbl as t
FOR XML PATH('parent'), TYPE;
Kết quả:
<parent>
<item>1</item>1<item>2</item>2<item>3</item></parent>
Một cách khác để chỉ định một cột không có tên là sử dụng ký tự đại diện *
dưới dạng bí danh cột.
Các cột có tên được chỉ định làm ký tự đại diện
Không cần thiết phải sử dụng ký tự đại diện trong trường hợp này vì các cột có giá trị NULL không có tên cột nhưng nó rất hữu ích khi bạn muốn các giá trị từ các cột thực nhưng bạn không muốn tên cột là tên nút.