2008-09-24 17 views
205

Jakie zapytanie MySQL spowoduje wyszukiwanie tekstu i zastąpienie go w jednym konkretnym polu w tabeli?Wyszukiwanie MySQL i zamiana tekstu w polu

tj. wyszukaj numer foo i zamień go na bar, aby rekord z polem o wartości hello foo stał się hello bar.

Odpowiedz

392

Zmień table_name i field dopasować nazwy tabel i pól w pytaniu:

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

UPDATE [table_name] SET [nazwa pola] = REPLACE ('[field_name]', "foo", "bar"); –

+3

Myślę, że szybciej nie używać "WHERE instr (field, 'foo')> 0;' (więc nie wykonałoby 2 wyszukiwań) ... Czy jestem w błędzie? – inemanja

+0

Czy ktoś może komentować pytanie @ inemanja? Czy byłoby szybciej bez klauzuli WHERE? – SBhojani

1

Funkcja łańcuchowa zrobi to.

+0

Działa dla mnie. To zależy od tego, jak interpretujesz pytanie. Jeśli potrzebujesz zmienić wpisy w bazie danych, użyj 'update'. W przeciwnym razie to rozwiązanie jest o wiele lepsze, ponieważ można go używać bez aktualizowania pól. – Gruber

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

Pomógł mi. Dla wszystkich noobów, usuń nawiasy kwadratowe. –

5

I jeśli chcesz wyszukać i wymienić b ased od wartości innego pola można zrobić CONCAT:

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

Wystarczy mieć ten jeden tutaj tak, że inni będą go znaleźć na raz.

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

Jak na przykład, jeśli chcę, aby zastąpić wszystkie wystąpienia Jana przez Marka użyję poniżej

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

użyłem powyżej linii komend następujące: aktualizacji TABELA nazwa zestawu POLA = replace (FIELD, "I", "i"); celem było zastąpienie i przy pomocy i ("A" powinno być małe). Problem polega na tym, że nie można znaleźć "I" w bazie danych, ale jeśli użyję go w stylu "% i%", to może go znaleźć wraz z wieloma innymi andami, które są częścią słowa lub nawet tymi, które są już małe.