¿Cómo puedo usar mySQL replace () para reemplazar cadenas en múltiples registros?

Tenemos una base de datos que tiene un montón de registros con algunos datos erróneos en una columna, en los que un editor incrustado escapó algunas cosas que no deberían haberse escapado y está rompiendo enlaces generados.

Quiero ejecutar una consulta para reemplazar los caracteres incorrectos en todos los registros, pero no puedo encontrar la manera de hacerlo. Encontré la función replace() en MySQL, pero ¿cómo puedo usarla dentro de una consulta?

Por ejemplo, cuál sería la syntax correcta si quisiera reemplazar la cadena < con un corchete angular real ( < ) en todos los registros que tienen < en la columna articleItem ? ¿Se puede hacer en una sola consulta (es decir, seleccionar y reemplazar todo de una sola vez), o tengo que hacer varias consultas? Incluso si se trata de múltiples consultas, ¿cómo uso replace() para reemplazar el valor de un campo en más de un registro?

En un nivel muy genérico

 UPDATE MyTable SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis') WHERE SomeOtherColumn LIKE '%PATTERN%' 

En tu caso, dices que se escapó pero, como no especificas cómo se escaparon, digamos que se escaparon a GREATERTHAN

 UPDATE MyTable SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>') WHERE articleItem LIKE '%GREATERTHAN%' 

Debido a que su consulta realmente va a funcionar dentro de la cadena, su cláusula WHERE haciendo su coincidencia de patrón es poco probable que mejore cualquier rendimiento, en realidad va a generar más trabajo para el servidor. A menos que tenga otro miembro de la cláusula WHERE que hará que esta consulta tenga un mejor rendimiento, simplemente puede hacer una actualización como esta:

 UPDATE MyTable SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>') 

También puede anidar varias llamadas REPLACE

 UPDATE MyTable SET StringColumn = REPLACE (REPLACE (StringColumn, 'GREATERTHAN', '>'), 'LESSTHAN', '<') 

También puede hacer esto cuando selecciona los datos (a diferencia de cuando los guarda).

Entonces, en lugar de:

SELECT MyURLString From MyTable

Podrías hacerlo

SELECT REPLACE (MyURLString, 'GREATERTHAN', '>') as MyURLString From MyTable

 UPDATE some_table SET some_field = REPLACE(some_field, '<', '<') 

Mira esto

 UPDATE some_table SET some_field = REPLACE("Column Name/String", 'Search String', 'Replace String') 

Por ejemplo, con una cadena de muestra:

 UPDATE some_table SET some_field = REPLACE("this is test string", 'test', 'sample') 

EG con nombre de columna / campo:

 UPDATE some_table SET some_field = REPLACE(columnName, 'test', 'sample') 

puedes escribir un procedimiento almacenado como este:

CREAR PROCEDIMIENTO sanitize_ TABLE ()

EMPEZAR

#replace space con guion bajo

UPDATE Table SET SET FieldName = REPLACE ( FieldName , “”, “_”) WHERE FieldName no es NULL;

#delete dot

UPDATE Table SET SET FieldName = REPLACE ( FieldName , “.”, “”) WHERE FieldName no es NULL;

#borrar (

UPDATE Table SET SET FieldName = REPLACE ( FieldName , “(“, “”) WHERE FieldName no es NULL;

#borrar )

UPDATE Tabla SET FieldName = REPLACE ( FieldName , “)”, “”) WHERE FieldName no es NULL;

# lugar o eliminar cualquier char que quieras

# ……………………..

FIN

De esta manera tienes control modularizado sobre la mesa.

También puede generalizar el procedimiento almacenado haciéndolo, paramétrico con la tabla para sanitar el parámetro de entrada