Zakładam, że przez xml-safe rozumiesz ucieczkę specjalnych znaczników XML. Jeśli masz kolumny XML, który chcesz umieścić w innym dokumencie XML to masz dwie opcje:
- projektu kolumna jako
[*]
: select ..., xmlcolumn as [*], ... from ... for xml path...
będzie osadzać zawartość XML w kolumnie XML wynikowej. Na przykład. jeśli kolumna ma wartość <element>value</element>
, wynik będzie podobny do <root><row><element>value</element></row></root>
.
- wyświetlać kolumnę jako nazwę kolumny:
select ..., xmlcolumn, ... from ... for xml path...
spowoduje to wstawienie zawartości kolumny jako wartości (tj. Na przykład. taka sama wartość jak powyżej spowoduje wygenerowanie <root><row><xmlcolumn><element><value</element>
.
Jeśli twoje pytanie dotyczy czegoś innego, to musisz je odpowiednio sformułować i poprawnie używać terminów. Nie wynajduj nowych terminów, których nikt nie rozumie, ale ty.
Aktualizacja:
Jeśli wstawiasz wartości XML w kolumnie, to nie trzeba robić nic w ogóle. Biblioteki klienta wiedzą, jak radzić sobie z odpowiednim ucieczką. Tak długo, jak piszesz swój kod poprawnie. Pamiętaj, XML to NOT ciąg znaków i nigdy nie powinien być traktowany jako jeden. Jeśli piszesz XML w swoim kliencie, użyj odpowiedniej biblioteki XML (XmlWriter, XML DOM, , , ,itd.). przechodząc w XML do SQL Server, użyj odpowiedniego typu: SqlXml. Procedury przechowywane powinny używać odpowiedniego parametru: XML. Po jej przeczytaniu użyj odpowiedniej metody, aby odczytać XML: GetSqlXml(). To samo dotyczy deklarowania typu w jednym z projektantów miriad (LINQ do SQL, EF itp.). Ostatecznie, istnieje potrzeba uniknięcia unikania znaków XML ręcznie. Jeśli to robisz, używasz niewłaściwego API i musisz wrócić do deski kreślarskiej.
Dobry początek czytania to XML Support in Microsoft SQL Server 2005.
I wreszcie, aby manipulować XML jako opisać (aktualizacja XML kolumnie tabeli A z kolumny XML w tabeli B), należy użyć XML methods konkretnie modify (... insert...) i powiązać kolumnę tabeli B wewnątrz XQuery za pomocą sql:column
:
update A
set somecolumn.modify('insert {sql:column("B.othercolumn")} before somenode')
from A join B on ...;
W swoim komentarzu zagrażasz XMLowi jako ciągowi znaków i, jak już powiedziałem, nigdy nie powinieneś tego robić: łańcuchy i XML są jak woda i olej.
"xml-safe" ?? Co przez to rozumiesz?? Wyjaśnij - nie jest to powszechnie używane wyrażenie w mojej opinii .... –
Co masz na myśli mówiąc "unikaj zastępowania siebie"? Czym jest to "zastąp", o którym mówisz? – NotMe
Założę się, że on myśli, że musi przetłumaczyć '<' na '<', na przykład. –