Bir dizenin bir kısmını değiştirerek sütun değerini güncelleme


325

MySQL veritabanında aşağıdaki sütunları içeren bir tablo var

[id, url]

Ve URL'ler şöyle:

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

Tüm URL'leri başka bir alan adına güncellemek istiyorum

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

dosyanın adını olduğu gibi tutarak.

Çalıştırmam gereken sorgu nedir?


Yanıtlar:



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

ilgili dokümanlar: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace


13
Merhaba, neden nereye ihtiyacım var?
Guy Cohen

14
@GuyCohen Aksi takdirde sorgu tablodaki her satırı değiştirir. WHEREMadde sadece belirli URL ile satırları değiştirmek için sorgu optimize eder. Mantıksal olarak, sonuç aynı olacaktır, ancak eklenmesi WHEREişlemi daha hızlı hale getirecektir.
Dmytro Shevchenko

3
WHEREYalnızca dizeleri parçaları değiştirmekte olduğumuzu da olmasını sağlar başlayacak olan http://etc/etc/veya string_to_be_replaced.Örneğin, verilen cevap, http://domain1.com/images/this/is/a/testetkilenen, ancak olurdu foobar/http://domain1.com/images/olmazdı.
Kyle Challis


9

SADECE WHERE yan tümcesindeki koşula (tüm kayıtların aksine) uygun olan kayıtları değiştirmek için WHERE yan tümcesine ihtiyacınız vardır . Kısmi dizeyi belirtmek için % işaretini kullanırsınız: IE

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

araçlar tüm kayıtlar BEGIN ile "...//domain1.com/images/"ve bir şey SONRA sahip (olduğunu %için ...)

Başka bir örnek:

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

yani tüm kayıtları içeren "http://domain1.com/images/"

ipin herhangi bir yerinde ...


7

Bunu dene...

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

1

İlk önce kontrol etmelisin

* university% & Amp% 'GİBİ SEÇENEKLER

Sonra, güncellemelisin

UPDATE üniversitesi SET kursu_adı = DEĞİŞTİR (kurs_adı, '& amp', '&') NEREDE id = 1

Sonuçlar: Mühendislik ve Teknoloji => Mühendislik ve Teknoloji

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.