有關mysql中的locate函數可以查看該鏈接:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_locate
有關mysql中的replace函數可以查看該鏈接: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace
以上便是今天我們要介紹使用的兩個函數。
使用背景:
條件:field_data_body 表的body_value值中有這樣一個規律的字符串"/eapdomain/UserFiles/1073/File/"、"/eapdomain/UserFiles/1073/File/",其中1073是用戶id。不要驚訝為什麼會有這樣的路徑!
目的:body_value中所有的符合上述規律的字符串替換為 "/sites/default/files/old/image/","/sites/default/files/old/file/"。
難點:數據量略大4千條數據,不可能手動更改;每條數據中可能存在著不止一個這樣的路徑或者不存在;用戶id為變動的,不能確定。
直接操作數據庫吧!
在Navicat中,打開你的數據庫命令行工具(不限於此工具),輸入以下的命令進行替換工作。
替換包含image的字符串
UPDATE field_data_body set body_value = replace(body_value, substring(body_value, locate('/eapdomain/UserFiles/', body_value),locate('/Image/', body_value)+7-locate('/eapdomain/UserFiles/', body_value)),'/sites/default/files/old/image/')
替換包含file的字符串
UPDATE field_data_body set body_value = replace(body_value, substring(body_value, locate('/eapdomain/UserFiles/', body_value),locate('/File/', body_value)+6-locate('/eapdomain/UserFiles/', body_value)),'/sites/default/files/old/file/')
能夠實現該目的的方法會很多,歡迎大家在下邊留言。