sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man bevarar ett et-tecken (&) när du använder FOR XML PATH på SQL 2005

Det finns situationer där en person kanske inte vill ha välformad XML - den jag (och kanske den ursprungliga affischen) stötte på använde For XML Path-tekniken för att returnera en enda fältlista med "underordnade" objekt via en rekursiv fråga. Mer information om denna teknik finns här (specifikt i avsnittet "The blackbox XML-metoder"):Sammanfoga radvärden i Transact-SQL

För min situation var det en verklig besvikelse att se "H&E" (en patologisk fläck) förvandlad till "välformad XML". Lyckligtvis hittade jag en lösning... följande sida hjälpte mig att lösa det här problemet relativt enkelt och utan att behöva omarbeta min rekursiva fråga eller lägga till ytterligare analys på presentationsnivå (för detta såväl som för andra/kommande situationer där mitt barn -rows datafält innehåller reserverade XML-tecken):Hantera specialtecken med FOR XML PATH

EDIT:kod nedan från det refererade blogginlägget.

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. Varför ska jag inte använda mysql_*-funktioner i PHP?

  2. Postgresql lagrad procedur returnerar välj resultatuppsättning

  3. MySQL DROP TABELL

  4. Tabell 'mysql.user' existerar inte:ERROR