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

Nous avons une firebase database qui contient un tas d’enregistrements avec des données erronées dans une colonne, dans lesquelles un éditeur incorporé a échappé à des éléments qui n’auraient pas dû être échappés et casser des liens générés.

Je veux lancer une requête pour remplacer les caractères incorrects dans tous les enregistrements, mais je n’arrive pas à comprendre comment le faire. J’ai trouvé la fonction replace() dans MySQL, mais comment puis-je l’utiliser dans une requête?

Par exemple, quelle serait la syntaxe correcte si je voulais remplacer la chaîne < avec un crochet inférieur à l’angle réel ( < ) dans tous les enregistrements qui ont < dans la colonne articleItem ? Peut-on le faire en une seule requête (c.-à-d. Sélectionner et remplacer tout en un seul), ou dois-je faire plusieurs requêtes? Même s’il s’agit de requêtes multiples, comment utiliser replace() pour remplacer la valeur d’un champ sur plusieurs enregistrements?

À un niveau très générique

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

Dans votre cas, vous dites que ceux-ci se sont échappés, mais comme vous ne spécifiez pas comment ils se sont échappés, disons qu’ils se sont échappés à GREATERTHAN

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

Étant donné que votre requête va effectivement fonctionner à l’intérieur de la chaîne, votre clause WHERE effectuant sa recherche de modèle ne permettra probablement pas d’améliorer les performances: elle va en fait générer plus de travail pour le serveur. À moins que vous ayez un autre membre de la clause WHERE qui va améliorer la performance de cette requête, vous pouvez simplement faire une mise à jour comme celle-ci:

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

Vous pouvez également imbriquer plusieurs appels REPLACE

 UPDATE MyTable SET SsortingngColumn = REPLACE (REPLACE (SsortingngColumn, '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 MyURLSsortingng From MyTable

Vous pourriez faire

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

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

Vérifie ça

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

Par exemple, avec une chaîne d’échantillon:

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

EG avec nom de colonne / champ:

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

vous pouvez écrire une procédure stockée comme ceci:

CREATE PROCEDURE sanitize_ TABLE ()

COMMENCER

#place place avec soulignement

Table de mise à jour SET FieldName = REPLACE ( FieldName , “”, “_”) WHERE FieldName n’est pas NULL;

#delete dot

UPDATE Table SET FieldName = REPLACE ( FieldName , “.”, “”) WHERE FieldName n’est pas NULL;

#effacer (

UPDATE Table SET FieldName = REPLACE ( FieldName , “(“, “”) WHERE FieldName n’est pas NULL;

#effacer )

UPDATE Table SET FieldName = REPLACE ( FieldName , “)”, “”) WHERE FieldName n’est pas NULL;

#raplace ou efface tous les caractères que tu veux

# ……………………..

FIN

De cette façon, vous avez un contrôle modulaire sur la table.

Vous pouvez aussi généraliser la procédure stockée en la faisant, paramésortingque avec la table pour sanitoze paramètre d’entrée