Antworten:
Ändern Sie table_nameund fieldpassen Sie Ihren Tabellennamen und das betreffende Feld an:
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
WHERE instr(field, 'foo') > 0;(es würde also keine 2 Suchvorgänge durchführen) ... irre ich mich?
WHEREKlausel, die Sie UPDATEin allen Zeilen machen ...
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);
Wie zum Beispiel, wenn ich alle Vorkommen von John durch Mark ersetzen möchte, werde ich unten verwenden,
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
Und wenn Sie basierend auf dem Wert eines anderen Felds suchen und ersetzen möchten, können Sie eine CONCAT durchführen:
update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));
Nur um dieses hier zu haben, damit andere es sofort finden.
Nach meiner Erfahrung ist die schnellste Methode
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';
Der INSTR()Weg ist der zweitschnellste und das Weglassen der WHEREKlausel insgesamt ist am langsamsten, selbst wenn die Spalte nicht indiziert ist.
Die Funktion "Zeichenfolge ersetzen" übernimmt dies.
update. Ansonsten ist diese Lösung viel besser, da sie ohne Aktualisierung der Felder verwendet werden kann.
Ich habe die obige Befehlszeile wie folgt verwendet: update TABLE-NAME set FIELD = replace (FIELD, 'And', 'und'); Der Zweck war, Und durch und zu ersetzen ("A" sollte Kleinbuchstaben sein). Das Problem ist, dass es das "Und" in der Datenbank nicht finden kann, aber wenn ich "% und%" verwende, kann es es zusammen mit vielen anderen Ands finden, die Teil eines Wortes sind oder sogar solche, die bereits in Kleinbuchstaben geschrieben sind.
[field_name], "foo", "bar");