Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да запазите амперсанд (&), докато използвате FOR XML PATH на SQL 2005

Има ситуации, в които човек може да не иска добре оформен XML - тази, с която се сблъсках аз (и може би оригиналният автор), използваше техниката For XML Path, за да върне списък с едно поле с „дете“ елементи чрез рекурсивна заявка. Повече информация за тази техника има тук (по-специално в секцията „XML методите на черната кутия“):Свързване на стойности на редове в Transact-SQL

За моята ситуация да видя „H&E“ (патологично петно) трансформирано в „добре оформен XML“ беше истинско разочарование. За щастие намерих решение... следващата страница ми помогна да разреша този проблем сравнително лесно и без да преархитекирам моята рекурсивна заявка или да добавя допълнителен анализ на ниво презентация (за това, както и за други/бъдещи ситуации, в които детето ми -редовете с данни съдържат запазени XML знаци):Обработка на специални знаци с FOR XML PATH

РЕДАКТИРАНЕ:код по-долу от цитираната публикация в блога.

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. CONCAT(колона) OVER(PARTITION BY...)? Групиране на редове, без групиране на самия резултат

  2. Поддържане на целостта на подкласа в релационна база данни

  3. Групово актуализиране на записи с SQL

  4. Какво е „идентификатор от няколко части“ и защо не може да бъде обвързан?

  5. SQL Server:Как да съхранявате двоични данни (напр. Word файл)?