Tôi có một bảng có cột XMLTYPE có tên 'InvoiceXML'.Cách xóa tên cột khi chọn từ cột XMLTYPE bằng cách sử dụng FOR XML PATH
Dữ liệu trong cột này là XML trong các hình thức:
<Invoice CustomerNum="1234" >
<CustomDeliveryDetails />
</Invoice>
Khi tôi làm một
SELECT ... FOR XML PATH(''), ROOT('Invoices')
tôi kết thúc với:
<Invoices>
<InvoiceXML>
<Invoice CustomerNum="1234" >
<CustomDeliveryDetails />
</Invoice>
</InvoiceXML>
</Invoices>
Làm thế nào để ngăn chặn sự tên cột InvoiceXML xuất hiện trong đầu ra?
Đừng nghĩ rằng bạn được phép nối một chuỗi trực tiếp lên cột XML. Bạn cần phải nhân đôi: 'cast (cast (InvoiceXML như nvarchar (max)) + '' as XML)' –
+1 Sau khi xem xét thêm, tôi nghĩ rằng nó có thể được đơn giản hóa hơn nữa. Tôi có vẻ như 'cast (InvoiceXML as XML)' là đủ. –
Tôi sẽ downvote nếu tôi có đủ đại diện bởi vì các diễn viên để nvarchar (tối đa) về cơ bản phá vỡ các loại XML do hạn chế chiều dài. varchar (max), nvarchar (max) và xml có thể lưu trữ 2GB nhưng nvarchar sử dụng 2x storge cho mỗi ký tự. Tham khảo: http://technet.microsoft.com/en-us/library/ms186939.aspx và http://msdn.microsoft.com/en-us/library/ms187339.aspx – rainabba