Myślę, że szybsze jest nieużywanie WHERE instr(field, 'foo') > 0;(więc nie wykona 2 wyszukiwań) ... Czy się mylę?
inemanja
2
@treddell, brak pozycji zaczyna się od 1 w ciągach SQL.
Alexis Wilke,
2
@inemanja, @Air bez WHEREklauzuli, którą robisz we UPDATEwszystkich wierszach ...
Alexis Wilke
7
Podobnie jak Pring, jeśli chcesz zostawić taki komentarz, możesz wyjaśnić dlaczego. Czy był to błąd w oryginalnej radzie, czy błąd z twojej strony? A czy wiesz, że zanim dokonasz gruntownych zmian w bazie danych, najpierw musisz wykonać kopię zapasową?
pdwalker
86
UPDATE table_name
SET field = replace(field,'string-to-find','string-that-will-replace-it');
Działa dla mnie, ponieważ muszę dodać kolejną klauzulę gdzie. AKTUALIZACJA nazwa_tabeli USTAW pole = WYMIANA (pole, „foo”, „pasek”) GDZIE pole PODOBNE „% foo%” ORAZ inne pole = „foo22”
Pracuje dla mnie. To zależy od tego, jak interpretujesz pytanie. Jeśli potrzebujesz zmienić wpisy bazy danych, użyj update. W przeciwnym razie to rozwiązanie jest znacznie lepsze, ponieważ można z niego korzystać bez aktualizacji pól.
Gruber
0
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”);WHERE instr(field, 'foo') > 0;
(więc nie wykona 2 wyszukiwań) ... Czy się mylę?WHERE
klauzuli, którą robisz weUPDATE
wszystkich wierszach ...źródło
Na przykład, jeśli chcę zastąpić wszystkie wystąpienia Johna znakiem Marka, użyję poniżej,
źródło
A jeśli chcesz wyszukiwać i zamieniać na podstawie wartości innego pola, możesz wykonać CONCAT:
Wystarczy mieć go tutaj, aby inni mogli go od razu znaleźć.
źródło
Z mojego doświadczenia wynika, że najszybszą metodą jest
Druga
INSTR()
droga jest najszybsza, aWHERE
całkowite pominięcie klauzuli jest najwolniejsze, nawet jeśli kolumna nie jest indeksowana.źródło
Wymień funkcja ciąg zrobi.
źródło
update
. W przeciwnym razie to rozwiązanie jest znacznie lepsze, ponieważ można z niego korzystać bez aktualizacji pól.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.
źródło