Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

ĐỐI VỚI thuộc tính XML PATH và xsi:nil

Tôi không nghĩ rằng có thể ngăn chặn hành vi này bằng các truy vấn con sử dụng for xml path . Có một vấn đề tương tự được báo cáo ở đây. https ://connect.microsoft.com/SQLServer/feedback/details/265956/suppress-namespace-attributes-in-nested-select-for-xml-statements

Bạn có thể nhận được đầu ra bạn muốn nếu bạn sử dụng for xml explicit thay vào đó.

declare @T table(Level1 int, Level2 int)
insert into @T values(null, 2)

select 1    as Tag,
       null as Parent,
       null as [root!1],
       null as [nested1!2!level1!ELEMENTXSINIL],
       null as [nested1!2!level2!ELEMENTXSINIL],
       null as [nested2!3!level1!ELEMENTXSINIL],
       null as [nested2!3!level2!ELEMENTXSINIL]
union all
select 2    as Tag,
       1    as Parent,
       null,
       Level1,
       Level2,
       null,
       null
from @T       
union all
select 3    as Tag,
       1    as Parent,
       null,
       null,
       null,
       Level1,
       Level2
from @T       
for xml explicit       

Kết quả:

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <nested1>
    <level1 xsi:nil="true" />
    <level2>2</level2>
  </nested1>
  <nested2>
    <level1 xsi:nil="true" />
    <level2>2</level2>
  </nested2>
</root>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server SMO phàn nàn về việc thiếu DLL

  2. Truy vấn SQL chạy tốt trong SSMS chạy rất chậm trong ASP.NET

  3. Cần có quyền để xem danh sách các bảng trong Management Studio

  4. Xử lý lỗi với con trỏ trong SQL

  5. Làm thế nào để chuyển đổi không gian trống thành giá trị null, sử dụng SQL Server?