Perbarui nilai kolom, ganti bagian dari string

326

Saya punya tabel dengan kolom berikut di database MySQL

[id, url]

Dan url-nya seperti:

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

Saya ingin memperbarui semua url ke domain lain

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

menjaga nama file apa adanya.

Apa pertanyaan yang harus saya jalankan?

Addev
sumber
Kemungkinan duplikat penggantian string MySQL
Steve Chambers

Jawaban:

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

dokumen yang relevan: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace

Marc B
sumber
13
Hai, mengapa saya perlu di mana?
Guy Cohen
14
@GuyCohen Karena jika tidak, kueri akan mengubah setiap baris dalam tabel. The WHEREklausul mengoptimalkan query hanya memodifikasi baris dengan URL tertentu. Logikanya, hasilnya akan sama, tetapi penambahan WHEREakan membuat operasi lebih cepat.
Dmytro Shevchenko
3
The WHEREMemastikan juga bahwa Anda hanya mengganti bagian dari string yang dimulai dengan http://etc/etc/atau string_to_be_replaced.Misalnya, di jawaban yang diberikan, http://domain1.com/images/this/is/a/testakan terpengaruh, tapi foobar/http://domain1.com/images/tidak mau.
Kyle Challis
9

Anda memerlukan klausa WHERE untuk mengganti HANYA rekaman yang sesuai dengan kondisi dalam klausa WHERE (yang bertentangan dengan semua rekaman). Anda menggunakan tanda % untuk menunjukkan string parsial: IE

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

berarti semua catatan yang DIMULAI dengan "...//domain1.com/images/"dan memiliki apa pun SETELAH (itu %untuk ...)

Contoh lain:

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

yang berarti semua catatan yang berisi "http://domain1.com/images/"

di bagian mana pun dari string ...

Kenneth Daly
sumber
7

Coba ini...

update [table_name] set [field_name] = 
replace([field_name],'[string_to_find]','[string_to_replace]');
ManiMaran A
sumber
1

Pertama, harus periksa

PILIH * DARI universityMANA course_name SUKA '% & amp%'

Selanjutnya, harus memperbarui

UPDATE universitas SET course_name = REPLACE (course_name, '& amp', '&') WHERE id = 1

Hasil: Rekayasa & Teknologi amp => Rekayasa & Teknologi

TechyFlick
sumber