萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySQL的String函數locate和replace實戰

MySQL的String函數locate和replace實戰

locate(substr,str,pos)函數是返回子串 substr 在字符串 str 中第一次出現的位置。如果子串 substr 在 str 中不存在,返回值為 0,REPLACE (str, from_str, to_str)替換字串,str為源字串,from_str為將要被替換的字串, to_str為目的字串。

有關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/')

能夠實現該目的的方法會很多,歡迎大家在下邊留言。

copyright © 萬盛學電腦網 all rights reserved