Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je utiliser mySQL replace() pour remplacer des chaînes dans plusieurs enregistrements ?

À un niveau très générique

UPDATE MyTable

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

WHERE SomeOtherColumn LIKE '%PATTERN%'

Dans votre cas, vous dites qu'ils ont été échappés mais puisque vous ne précisez pas comment ils ont été échappés, disons qu'ils ont été échappés à GREATERTHAN

UPDATE MyTable

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

WHERE articleItem LIKE '%GREATERTHAN%'

Étant donné que votre requête va réellement fonctionner à l'intérieur de la chaîne, votre WHERE clause faisant sa correspondance de modèle est peu susceptible d'améliorer les performances - cela va en fait générer plus de travail pour le serveur. À moins que vous n'ayez un autre membre de la clause WHERE qui améliorera les performances de cette requête, vous pouvez simplement effectuer une mise à jour comme celle-ci :

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

Vous pouvez également imbriquer plusieurs REPLACE appels

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

Vous pouvez également le faire lorsque vous sélectionnez les données (et non lorsque vous les enregistrez).

Donc au lieu de :

SELECT MyURLString From MyTable

Vous pourriez faire

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