Réponses:
Modifiez table_name
et field
pour faire correspondre le nom et le champ de votre table en question:
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
WHERE instr(field, 'foo') > 0;
(donc il ne ferait pas 2 recherches) ... Ai-je tort?
WHERE
clause vous faites un UPDATE
sur toutes les lignes ...
UPDATE table_name
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');
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 que j'utiliserai ci-dessous,
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
Et si vous souhaitez rechercher et remplacer en fonction de la valeur d'un autre champ, vous pouvez faire 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 afin que les autres le trouvent immédiatement.
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%';
Le INSTR()
chemin est le deuxième plus rapide et l'omission de la WHERE
clause est la plus lente, même si la colonne n'est pas indexée.
La fonction Remplacer la chaîne le fera.
update
. Sinon, cette solution est bien meilleure car elle peut être utilisée sans mettre à jour les champs.
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 par et ("A" devrait être en minuscule). Le problème est qu'il ne peut pas trouver le «et» dans la base de données, mais si j'utilise comme «% et%», il peut le trouver avec de nombreux autres ands qui font partie d'un mot ou même ceux qui sont déjà en minuscules.
[field_name]
, "foo", "bar");