Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como preservar um e comercial (&) ao usar FOR XML PATH no SQL 2005


Há situações em que uma pessoa pode não querer um XML bem formado - aquele que eu (e talvez o pôster original) encontrei estava usando a técnica For XML Path para retornar uma lista de campo único de itens 'filhos' por meio de uma consulta recursiva. Mais informações sobre essa técnica estão aqui (especificamente na seção 'Os métodos XML da caixa preta'):Concatenando valores de linha no Transact-SQL

Para a minha situação, ver 'H&E' (uma mancha de patologia) transformado em 'XML bem formado' foi uma verdadeira decepção. Felizmente, encontrei uma solução... a página a seguir me ajudou a resolver esse problema com relativa facilidade e sem ter que rearquitetar minha consulta recursiva ou adicionar análise adicional no nível da apresentação (para isso, bem como para outras situações/futuras em que meu filho campos de dados -rows contêm caracteres XML reservados):Manuseando caracteres especiais com FOR XML PATH

EDIT:código abaixo da postagem do blog referenciada.
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;