MySQL recherche et remplace du texte dans un champ
Question
Quelle requête MySQL fera une recherche de texte et remplacera dans un champ particulier d'une table?
I.e. recherchez foo
et remplacez-le par barre
afin qu'un enregistrement avec un champ ayant la valeur hello foo
devienne hello bar
.
Autres conseils
UPDATE table_name
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');
Et si vous souhaitez rechercher et remplacer en fonction de la valeur d'un autre champ, vous pouvez effectuer un CONCAT:
update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));
Juste pour avoir celui-ci ici pour que les autres le trouvent immédiatement.
UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);
Comme par exemple, si je veux remplacer toutes les occurrences de John par Mark, je vais utiliser ci-dessous,
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
La Remplacer la fonction de chaîne sera faire ça.
D'après mon expérience, la méthode la plus rapide est
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';
La méthode INSTR ()
est la deuxième plus rapide et omettre la clause WHERE
est le plus lent, même si la colonne n'est pas indexée.
J'ai utilisé la ligne de commande ci-dessus comme suit: update TABLE-NAME set FIELD = replace (FIELD, 'And', 'and'); le but était de remplacer And with and ("A" devrait être en minuscule). Le problème, c’est qu’il ne trouve pas le fichier "Et". dans la base de données, mais si j'utilise comme "% And%" alors il peut le trouver avec beaucoup d'autres ets qui font partie d'un mot ou même ceux qui sont déjà en minuscules.