Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So behalten Sie ein kaufmännisches Und (&) bei, während Sie FOR XML PATH in SQL 2005 verwenden

Es gibt Situationen, in denen eine Person kein wohlgeformtes XML haben möchte - diejenige, auf die ich (und vielleicht das ursprüngliche Poster) gestoßen bin, war die Verwendung der For XML Path-Technik, um eine einzelne Feldliste von "untergeordneten" Elementen über eine rekursive Abfrage zurückzugeben. Weitere Informationen zu dieser Technik finden Sie hier (insbesondere im Abschnitt „Die Blackbox-XML-Methoden“):Verketten von Zeilenwerten in Transact-SQL

Für meine Situation war es eine echte Enttäuschung, zu sehen, wie „H&E“ (ein pathologischer Fleck) in „wohlgeformtes XML“ umgewandelt wurde. Glücklicherweise habe ich eine Lösung gefunden ... die folgende Seite hat mir geholfen, dieses Problem relativ einfach und ohne meine rekursive Abfrage neu zu gestalten oder zusätzliches Parsing auf Präsentationsebene hinzuzufügen (dafür sowie für andere/zukünftige Situationen, in denen mein Kind -rows-Datenfelder enthalten reservierte XML-Zeichen):Behandlung von Sonderzeichen mit FOR XML PATH

BEARBEITEN:Code unten aus dem referenzierten Blogbeitrag.

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;