sql >> Base de Datos >  >> RDS >> Mysql

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

A un nivel muy genérico

UPDATE MyTable

SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')

WHERE SomeOtherColumn LIKE '%PATTERN%'

En su caso, dice que se escaparon, pero dado que no especifica cómo se escaparon, digamos que se escaparon a GREATERTHAN

UPDATE MyTable

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

WHERE articleItem LIKE '%GREATERTHAN%'

Dado que su consulta realmente funcionará dentro de la cadena, su WHERE Es poco probable que la cláusula que hace su coincidencia de patrones mejore el rendimiento; en realidad, generará más trabajo para el servidor. A menos que tenga otro miembro de la cláusula WHERE que hará que esta consulta funcione mejor, simplemente puede hacer una actualización como esta:

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

También puede anidar múltiples REPLACE llamadas

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

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

Así que en lugar de:

SELECT MyURLString From MyTable

podrías hacer

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