Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso usar mySQL replace() para substituir strings em vários registros?


A um nível muito genérico
UPDATE MyTable

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

WHERE SomeOtherColumn LIKE '%PATTERN%'

No seu caso, você diz que eles escaparam, mas como você não especifica como eles escaparam, digamos que eles tenham escapado para GREATERTHAN
UPDATE MyTable

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

WHERE articleItem LIKE '%GREATERTHAN%'

Como sua consulta realmente funcionará dentro da string, seu WHERE É improvável que a cláusula fazendo sua correspondência de padrões melhore qualquer desempenho - na verdade, ela gerará mais trabalho para o servidor. A menos que você tenha outro membro da cláusula WHERE que fará com que essa consulta tenha um desempenho melhor, você pode simplesmente fazer uma atualização como esta:
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')

Você também pode aninhar vários REPLACE chamadas
UPDATE MyTable
SET StringColumn = REPLACE (REPLACE (StringColumn, 'GREATERTHAN', '>'), 'LESSTHAN', '<')

Você também pode fazer isso ao selecionar os dados (em vez de salvá-los).

Então ao invés de:

SELECT MyURLString From MyTable

Você poderia fazer

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