uso operador ejemplos sql xml tsql

ejemplos - operador like sql server



¿Puedo hacer una búsqueda/reemplazo en t-sql? (3)

Para encontrar un contenido en una columna XML, busque el método existente (), como se describe en MSDN aquí .

SELECT * FROM Table WHERE XMLColumn.exist(''/Root/MyElement'') = 1

... para reemplazar, use el método modify (), como se describe aquí .

SET XMLColumn.modify('' replace value of (/Root/MyElement/text())[1] with "new value" '')

... todos asumiendo SqlServer 2005 o 2008. Esto se basa en XPath, que necesitarás saber.

Básicamente tengo una columna xml, y necesito encontrar y reemplazar un valor de etiqueta en cada registro.


update my_table set xml_column = replace(xml_column, "old value", "new value")


Para cualquier cosa real, iría con xpaths, pero a veces solo necesitas una solución rápida y sucia:

Puede usar CAST para convertir esa columna xml en un varchar normal, y luego hacer su reemplazo normal.

UPDATE xmlTable SET xmlCol = REPLACE( CAST( xmlCol as varchar(max) ), ''[search]'', ''[replace]'')

Esa misma técnica también hace que buscar XML sea muy fácil cuando solo necesita ejecutar una consulta rápida para encontrar algo y no desea tratar con xpaths.

SELECT * FROM xmlTable WHERE CAST( xmlCol as varchar(max) ) LIKE ''%found it!%''

Editar: Solo quiero actualizar esto un poco, si recibes un mensaje en la línea de Conversión de uno o más caracteres de XML a colación de destino imposible , entonces solo necesitas usar nvarchar que soporte unicode.

CAST( xmlCol as nvarchar(max) )