Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come preservare una e commerciale (&) durante l'utilizzo di FOR XML PATH su SQL 2005

Ci sono situazioni in cui una persona potrebbe non volere un XML ben formato:quello che io (e forse il poster originale) ho incontrato stava usando la tecnica For XML Path per restituire un elenco a campo singolo di elementi "figli" tramite una query ricorsiva. Maggiori informazioni su questa tecnica sono disponibili qui (in particolare nella sezione "I metodi XML della blackbox"):Concatenamento di valori di riga in Transact-SQL

Per la mia situazione, vedere "H&E" (una macchia di patologia) trasformata in "XML ben formato" è stata una vera delusione. Fortunatamente, ho trovato una soluzione... la pagina seguente mi ha aiutato a risolvere questo problema in modo relativamente semplice e senza dover riprogettare la mia query ricorsiva o aggiungere ulteriori analisi a livello di presentazione (per questo e per altre/future situazioni in cui mio figlio -i campi dati righe contengono caratteri XML riservati):Gestione di caratteri speciali con FOR XML PATH

EDIT:codice qui sotto dal post del blog di riferimento.

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;