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) )