Mam kolumnę zawierającą adresy URL (identyfikator, adres URL):
http://www.example.com/articles/updates/43
http://www.example.com/articles/updates/866
http://www.example.com/articles/updates/323
http://www.example.com/articles/updates/seo-url
http://www.example.com/articles/updates/4?something=test
Chciałbym zmienić słowo „aktualizacje” na „aktualności”. Czy można to zrobić za pomocą skryptu?
Odpowiedzi:
Teraz rzędy, które były
http://www.example.com/articles/updates/43
będzie
http://www.example.com/articles/news/43
http://www.electrictoolbox.com/mysql-find-replace-text/
źródło
WHERE LIKE
klauzuli na końcu, ponieważ jeśli tekstu do znalezienia nie ma, wiersz nie zostanie zaktualizowany, ale powinien przyspieszyć . „LIKE '%%'
nie korzysta z żadnych indeksów, jeśli byłyby tam inne części GDZIE, na przykład coś takiegodate_added > '2014-07-01'
mogłoby pomócTak, MySQL ma funkcję REPLACE ():
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace
Pamiętaj, że łatwiej jest zrobić ten alias podczas korzystania
SELECT
źródło
updates
pokazuje się tylko raz w ciągu, to działałoby. W przeciwnym razie utkniesz w bezpośredniej manipulacji ciągami, co jest prawdziwym problemem w MySQL. W tym momencie łatwiej byłoby napisać jednorazowy skrypt, aby wybrać pola, manipulować w kliencie, a następnie odpisać.Funkcja zamiany powinna działać dla Ciebie.
Zwraca ciąg znaków ze wszystkimi wystąpieniami ciągu od_str zastąpiony przez ciąg do_str.
REPLACE()
wykonuje rozróżnianie wielkości liter podczas wyszukiwania from_str.źródło
Możesz po prostu użyć funkcji replace (),
Uwaga: powyższe zapytanie, jeśli dla rekordów aktualizacji bezpośrednio w tabeli, jeśli chcesz wybrać zapytanie, a dane nie powinny mieć wpływu na tabelę, możesz użyć następującego zapytania-
źródło
Oprócz odpowiedzi gmaggio, jeśli potrzebujesz dynamicznie
REPLACE
iUPDATE
według innej kolumny możesz na przykład:W moim przykładzie ciąg
articles/news/
jest przechowywany wother_table t2
i nie ma potrzeby używaćLIKE
wWHERE
klauzuli.źródło