Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak zachować znak &(&) podczas używania FOR XML PATH w SQL 2005?

Zdarzają się sytuacje, w których osoba może nie chcieć dobrze sformułowanego kodu XML — ten, który napotkałem (i być może oryginalny autor), wykorzystywał technikę For XML Path do zwracania listy pojedynczych pól zawierających elementy „podrzędne” za pomocą zapytania rekurencyjnego. Więcej informacji na temat tej techniki znajduje się tutaj (w szczególności w sekcji „Metody XML blackboxa”):Łączenie wartości wierszy w Transact-SQL

W mojej sytuacji ujrzenie „H&E” (plamy patologicznej) przekształconej w „dobrze uformowany XML” było prawdziwym rozczarowaniem. Na szczęście znalazłem rozwiązanie... poniższa strona pomogła mi rozwiązać ten problem stosunkowo łatwo i bez konieczności zmiany architektury mojego zapytania rekurencyjnego lub dodawania dodatkowego parsowania na poziomie prezentacji (w tym jak również w innych/przyszłych sytuacjach, w których moje dziecko Pola danych -rows zawierają zastrzeżone znaki XML):Obsługa znaków specjalnych za pomocą FOR XML PATH

EDYCJA:kod poniżej z wpisu na blogu, do którego się odwołuje.

select
  stuff(
     (select ', <' + name + '>'
     from sys.databases
     where database_id > 4
     order by name
     for xml path(''), root('MyString'), type
     ).value('/MyString[1]','varchar(max)')
   , 1, 2, '') as namelist;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instrukcja Delete w SQL jest bardzo powolna

  2. Jak usunąć przy użyciu INNER JOIN w programie SQL Server?

  3. Konwertuj „datetimeoffset” na „datetime” w SQL Server (przykłady T-SQL)

  4. Jak usunąć ze źródła za pomocą polecenia MERGE w SQL Server 2008?

  5. Wydajny sposób na dzielenie ciągów za pomocą CTE