Odpowiedzi:
Zmień table_name
i, field
aby dopasować nazwę tabeli i pole:
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
WHERE instr(field, 'foo') > 0;
(więc nie wykona 2 wyszukiwań) ... Czy się mylę?
WHERE
klauzuli, którą robisz we UPDATE
wszystkich wierszach ...
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);
Na przykład, jeśli chcę zastąpić wszystkie wystąpienia Johna znakiem Marka, użyję poniżej,
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
A jeśli chcesz wyszukiwać i zamieniać na podstawie wartości innego pola, możesz wykonać CONCAT:
update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));
Wystarczy mieć go tutaj, aby inni mogli go od razu znaleźć.
Z mojego doświadczenia wynika, że najszybszą metodą jest
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';
Druga INSTR()
droga jest najszybsza, a WHERE
całkowite pominięcie klauzuli jest najwolniejsze, nawet jeśli kolumna nie jest indeksowana.
Użyłem powyższego wiersza poleceń w następujący sposób: aktualizacja NAZWA TABELI ustaw FIELD = zamień (FIELD, „I”, „i”); celem było zastąpienie I przez i („A” powinno być pisane małymi literami). Problem polega na tym, że nie może znaleźć „I” w bazie danych, ale jeśli użyję np. „% And%”, może to znaleźć wraz z wieloma innymi i, które są częścią słowa, a nawet te, które są już małe.
[field_name]
, „foo”, „bar”);