Frage

Was MySQL-Abfrage wird eine Textsuche tun und in einem bestimmten Feld in einer Tabelle ersetzen?

d. Suche nach foo und ersetzen mit bar so ein Datensatz mit einem Feld mit dem Wert hello foo hello bar wird.

War es hilfreich?

Lösung

Ändern table_name und field zu Ihrem Tabellennamen und Feld in Frage entsprechen:

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;

Andere Tipps

UPDATE table_name 
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');

Und wenn Sie möchten, basierend auf dem Wert eines anderen Feldes suchen und ersetzen Sie eine CONCAT tun könnte:

update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));

Nur dieses eine hier zu haben, so dass andere es auf einmal finden.

 UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);

Wie zum Beispiel, wenn ich alle Vorkommen von John Mark ersetzen möchten werde ich unten verwenden,

UPDATE student SET student_name = replace(student_name, 'John', 'Mark');

Die Ersetzen String-Funktion wird tun.

Nach meiner Erfahrung ist die schnellste Methode ist

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';

Die INSTR() Art und Weise ist die zweitschnellste und Weglassen der WHERE Klausel ganz am langsamsten ist, auch wenn die Spalte nicht indiziert ist.

Ich benutzte die oben Befehlszeile wie folgt: Update TABLE-NAME eingestellt FIELD = ersetzen (FIELD, 'und', 'und'); Der Zweck war, zu ersetzen und mit und ( „A“ soll klein geschrieben werden). Das Problem ist nicht die finden kann „und“ in der Datenbank, aber wenn ich wie „% und%“ verwenden, dann kann es sie zusammen mit vielen anderen ands finden, die Teil eines Wortes oder sogar diejenigen, die bereits klein geschrieben werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top