sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo conservar un ampersand (&) al usar FOR XML PATH en SQL 2005

Hay situaciones en las que una persona puede no querer un XML bien formado:el que yo (y quizás el cartel original) encontré estaba usando la técnica For XML Path para devolver una lista de un solo campo de elementos 'secundarios' a través de una consulta recursiva. Más información sobre esta técnica está aquí (concretamente en la sección 'Los métodos XML de la caja negra'):Concatenar valores de fila en Transact-SQL

Para mi situación, ver 'H&E' (una mancha de patología) transformada en 'XML bien formado' fue una verdadera decepción. Afortunadamente, encontré una solución... la siguiente página me ayudó a resolver este problema con relativa facilidad y sin tener que volver a diseñar mi consulta recursiva o agregar un análisis adicional en el nivel de presentación (tanto para esta como para otras situaciones futuras en las que mi hijo -los campos de datos de filas contienen caracteres XML reservados):Manejo de caracteres especiales con FOR XML PATH

EDITAR:código a continuación de la publicación de blog a la que se hace referencia.

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;