Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso utilizzare mySQL replace() per sostituire le stringhe in più record?

A un livello molto generico

UPDATE MyTable

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

WHERE SomeOtherColumn LIKE '%PATTERN%'

Nel tuo caso dici che sono stati sottoposti a escape ma poiché non specifichi come sono stati sottoposti a escape, diciamo che sono stati sottoposti a escape in GREATERTHAN

UPDATE MyTable

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

WHERE articleItem LIKE '%GREATERTHAN%'

Poiché la tua query funzionerà effettivamente all'interno della stringa, il tuo WHERE È improbabile che la clausola che esegue la corrispondenza del modello migliori le prestazioni:in realtà genererà più lavoro per il server. A meno che tu non abbia un altro membro della clausola WHERE che farà funzionare meglio questa query, puoi semplicemente eseguire un aggiornamento come questo:

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

Puoi anche annidare più REPLACE chiamate

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

Puoi farlo anche quando selezioni i dati (anziché quando li salvi).

Quindi invece di :

SELECT MyURLString From MyTable

Potresti fare

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