Welche MySQL-Abfrage führt eine Textsuche durch und ersetzt sie in einem bestimmten Feld in einer Tabelle?
Das heißt Suchen Sie nach foo
und ersetzen Sie sie durch bar
, sodass ein Datensatz mit einem Feld mit dem Wert hello foo
hello bar
wird.
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);
Wenn ich beispielsweise alle Vorkommen von John durch Mark ersetzen möchte, verwende ich unten:
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
Und wenn Sie basierend auf dem Wert eines anderen Feldes suchen und ersetzen möchten, können Sie ein CONCAT ausfü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 werden.
Die Funktion Replace string erledigt dies.
Ich habe die obige Befehlszeile wie folgt verwendet: Update TABLE-NAME set FIELD = replace (FIELD, 'And', 'und'); Der Zweck bestand darin, And durch und zu ersetzen ("A" sollte Kleinbuchstaben sein ). Das Problem ist, dass es das "Und" in der Datenbank nicht finden kann, aber wenn ich wie "% And%" verwende, kann es es zusammen mit vielen anderen ands finden, die Teil eines Wortes sind, oder sogar denjenigen, die bereits klein geschrieben sind.
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 ist insgesamt am langsamsten.