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ć?

Addev
źródło
Możliwy duplikat ciągu MySQL zastąpić
Steve Chambers

Odpowiedzi:

681
UPDATE urls
SET url = REPLACE(url, 'domain1.com/images/', 'domain2.com/otherfolder/')
Dmytro Szewczenko
źródło
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

Marc B.
źródło
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 ...

Kenneth Daly
źródło
7

Spróbuj tego...

update [table_name] set [field_name] = 
replace([field_name],'[string_to_find]','[string_to_replace]');
ManiMaran A
źródło
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

TechyFlick
źródło