我有以下的列的表在MySQL數據庫中更新列值,字符串
[id, url]
,並且URL都喜歡的替換部分:
http://domain1.com/images/img1.jpg
我要更新所有該網址爲另一個域名
http://domain2.com/otherfolder/img1.jpg
保持文件的名稱原樣。
我必須運行什麼查詢?
我有以下的列的表在MySQL數據庫中更新列值,字符串
[id, url]
,並且URL都喜歡的替換部分:
http://domain1.com/images/img1.jpg
我要更新所有該網址爲另一個域名
http://domain2.com/otherfolder/img1.jpg
保持文件的名稱原樣。
我必須運行什麼查詢?
UPDATE yourtable
SET url = REPLACE(url, 'http://domain1.com/images/', 'http://domain2.com/otherfolder/')
WHERE url LIKE ('http://domain1.com/images/%');
相關文檔:http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace
+1爲文檔的參考... – 2014-08-14 16:19:27
嗨那裏 - 爲什麼我需要在哪裏? – 2014-10-07 14:21:56
@GuyCohen因爲否則查詢將修改表中的每一行。 WHERE子句將查詢優化爲僅修改具有特定URL的行。從邏輯上講,結果將是相同的,但增加'WHERE'會使操作更快。 – 2015-08-14 14:34:42
嘗試使用REPLACE function:
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwWw.mysql.com'
注意,它是區分大小寫。
+用於指向大小寫敏感。 – kubilay 2012-12-31 11:24:17
你如何做案例 - 不靈活? Am stack plz hlp。 thx – 2013-12-26 14:05:36
@UniversalGrasp在這裏看到很多可能的答案:http://stackoverflow.com/questions/5656056/case-insensitive-replace-in-mysql – 2016-03-09 15:05:35
您需要WHERE子句更換ONLY,在與符合條件的記錄WHERE子句(而不是所有記錄)。您使用%符號來表示部分字符串:I.E.
LIKE('... // domain1.com/images/%');意味着BEGIN與 「... // domain1.com/images/」 和有什麼畢竟記錄(這是針對%...)
又如:
LIKE('%http://domain1.com/images/% ')這意味着在字符串的任何部分包含「http://domain1.com/images/」 的所有記錄...
[MySQL字符串替換]的可能重複(http://stackoverflow.com/questions/5956993/mysql-string-replace ) – 2016-08-02 13:59:52