Zaktualizuj wartość kolumny, zastępując część ciągu


325

Mam tabelę z następującymi kolumnami w bazie danych MySQL

[id, url]

A adresy URL są jak:

 http://domain1.com/images/img1.jpg

Chcę zaktualizować wszystkie adresy URL do innej domeny

 http://domain2.com/otherfolder/img1.jpg

zachowując nazwę pliku taką, jaka jest.

Jakie zapytanie muszę uruchomić?


Odpowiedzi:



162
UPDATE yourtable
SET url = REPLACE(url, 'http://domain1.com/images/', 'http://domain2.com/otherfolder/')
WHERE url LIKE ('http://domain1.com/images/%');

odpowiednie dokumenty: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace


13
Cześć, dlaczego potrzebuję gdzie?
Guy Cohen

14
@GuyCohen Ponieważ w przeciwnym razie zapytanie zmodyfikuje każdy wiersz w tabeli. WHEREKlauzula optymalizuje zapytanie do modyfikowania tylko wiersze z określonym adresem URL. Logicznie wynik będzie taki sam, ale dodanie WHEREspowoduje przyspieszenie operacji.
Dmytro Szewczenko

3
Te WHEREtakże zapewnia, że jesteś tylko wymiana części łańcuchów, które rozpoczynają się http://etc/etc/lub string_to_be_replaced.na przykład w danej odpowiedzi, http://domain1.com/images/this/is/a/testbędzie mieć wpływ, ale foobar/http://domain1.com/images/nie.
Kyle Challis


9

Potrzebujesz klauzuli WHERE , aby zastąpić TYLKO rekordy, które spełniają warunek klauzuli WHERE (w przeciwieństwie do wszystkich rekordów). Używasz znaku %, aby wskazać ciąg częściowy: IE

LIKE ('...//domain1.com/images/%');

oznacza wszystkie zapisy, z którymi ZACZYNAJĄ"...//domain1.com/images/" i mają coś PO (to jest po %...)

Inny przykład:

LIKE ('%http://domain1.com/images/%')

co oznacza wszystkie rekordy, które zawiera "http://domain1.com/images/"

w dowolnej części ciągu ...


7

Spróbuj tego...

update [table_name] set [field_name] = 
replace([field_name],'[string_to_find]','[string_to_replace]');

1

Najpierw sprawdź

WYBIERZ * Z universityTAM, GDZIE nazwa kursu podoba się „% & amp%”

Następnie musisz zaktualizować

AKTUALIZACJA ZESTAW uniwersytetu nazwa_ kursu = WYMIANA (nazwa_ kursu, „& amp”, „&”) GDZIE id = 1

Wyniki: Inżynieria i technologia wzmacniacza => Inżynieria i technologia

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.