Antworten:
Ändern Sie table_name
und field
passen 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?
WHERE
Klausel, die Sie UPDATE
in 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 WHERE
Klausel 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");