下面是一個示例表:SQL UPDATE中的str_replace?
name | picture
John S. | http://servera.host.com/johns.png
Linda B. | http://servera.host.com/lindab.png
...
比方說,有幾百條記錄。
讓我們也說我們將服務器從「servera」移動到「serverb」。
是否有可能進入此表一個查詢重命名列「圖片」中的內容爲每個記錄讀取正確的服務器名稱?
下面是一個示例表:SQL UPDATE中的str_replace?
name | picture
John S. | http://servera.host.com/johns.png
Linda B. | http://servera.host.com/lindab.png
...
比方說,有幾百條記錄。
讓我們也說我們將服務器從「servera」移動到「serverb」。
是否有可能進入此表一個查詢重命名列「圖片」中的內容爲每個記錄讀取正確的服務器名稱?
T-SQL:
update TBL
set picture = Replace(picture, 'servera', 'serverb')
where picture like '%servera%'
甲骨文:
update TBL
set picture = replace(picture, 'servera', 'serverb')
where picture like '%servera%'
的MySQL:
update TBL
set picture = REPLACE(picture, 'servera', 'serverb')
where picture like '%servera%'
很高興找到簡單而強大的函數:)感謝MySQL示例。 +1 – Ben 2013-02-27 22:09:24
UPDATE users
SET picture = REPLACE(picture, 'http://servera.host.com/', 'http://serverb.host.com/')
WHERE picture LIKE 'http://servera.host.com/%';
我包括更多的字符串,因爲我擔心'修復'名爲'somethingserverasomething.jpg'的圖片。我可能也會考慮製作一個base_url表格,並將圖像文件名存儲在用戶中,但這不是您要問的問題;-)
是的,在幾乎每個數據庫引擎上都可以用單個UPDATE查詢。但是,由於您沒有指定特定的產品,因此無論用戶最喜歡的產品是什麼,您都可能只會得到答案。讓我們知道您使用的是什麼,並且有人會回覆該產品的語法。 – 2010-10-15 16:07:29
哦,這是真的 - 謝謝,拉里。我忘了提及我正在開發MySQL – 2010-10-15 16:13:33
這比直接回答你的問題更具體的架構要點,但我建議不要將URL的FQDN存儲在數據庫中。在應用程序代碼中將其保持爲常量,然後在繪製指向圖片的鏈接時,src將合併PIC_HOST_DOMAIN_NAME。'/ johns.png'。這樣可以更輕鬆地移動圖像,還可以使用CDN作爲坐在圖像前面的CNAME。 – 2010-10-15 16:22:04