Tôi giả định rằng bằng xml-safe, bạn có nghĩa là thoát khỏi các thẻ đặc biệt XML. Nếu bạn có một cột XML bạn muốn bao gồm trong một tài liệu XML sau đó bạn có hai lựa chọn:
- dự án cột như
[*]
: select ..., xmlcolumn as [*], ... from ... for xml path...
này sẽ nhúng nội dung XML của cột trong XML kết quả. Ví dụ. nếu cột có giá trị <element>value</element>
thì kết quả sẽ giống như <root><row><element>value</element></row></root>
.
- dự án cột làm tên cột:
select ..., xmlcolumn, ... from ... for xml path...
điều này sẽ chèn nội dung của cột dưới dạng giá trị (nghĩa là nó sẽ thoát khỏi cột). Ví dụ. cùng giá trị như trên sẽ tạo ra <root><row><xmlcolumn><element><value</element>
.
Nếu câu hỏi của bạn là về thứ gì đó khác, thì bạn sẽ phải diễn đạt lại một cách thích hợp và sử dụng cụm từ đúng cách. Đừng phát minh ra những thuật ngữ mới mà không ai hiểu nhưng bạn.
Cập nhật:
Nếu bạn đang chèn giá trị XML vào cột, sau đó bạn không cần phải làm bất cứ điều gì cả. Các thư viện khách hàng biết cách xử lý việc thoát thích hợp. Miễn là bạn viết mã của mình chính xác. Lưu ý, XML là NOT một chuỗi và không bao giờ nên được coi là một. Nếu bạn viết XML trong ứng dụng khách, hãy sử dụng thư viện XML thích hợp (XmlWriter, XML DOM, Linq to XML v.v.). khi chuyển trong XML vào SQL Server, hãy sử dụng kiểu thích hợp: SqlXml. Các thủ tục được lưu trữ nên sử dụng kiểu tham số appropiate: XML. Khi bạn đọc nó, hãy sử dụng phương pháp thích hợp để đọc XML: GetSqlXml(). Cũng giống như việc khai báo kiểu trong một trong các nhà thiết kế miriad (LINQ to SQL, EF, v.v.). Cuối cùng, có không bao giờ bất kỳ nhu cầu nào để thoát khỏi các ký tự XML theo cách thủ công. Nếu bạn thấy mình làm điều đó, bạn đang sử dụng sai API và bạn phải quay lại bảng vẽ.
Bắt đầu đọc tốt là XML Support in Microsoft SQL Server 2005.
Và cuối cùng, để thao tác XML như bạn mô tả (cột XML cập nhật của bảng A với cột XML của bảng B), bạn sử dụng XML methods, cụ thể modify (... insert...), và bạn ràng buộc cột bảng B bên trong XQuery sử dụng sql:column
:
update A
set somecolumn.modify('insert {sql:column("B.othercolumn")} before somenode')
from A join B on ...;
Trong bạn nhận xét bạn đe dọa XML dưới dạng chuỗi và, như tôi đã nói, bạn sẽ không bao giờ làm điều đó: chuỗi và XML là nước và dầu.
Nguồn
2010-07-27 19:48:16
"xml-an toàn" ?? Ý bạn là như thế nào?? Xin giải thích - không phải là một biểu thức thường được sử dụng trong quan điểm của tôi .... –
Bạn có ý gì bằng cách "tránh làm thay thế bản thân mình"? "Thay thế" bạn nói về cái gì? – NotMe
Tôi cá là anh ta nghĩ anh ta cần dịch '<' sang '<', ví dụ. –