2013-07-07 61 views
0

我在我的本地主機站點上工作的正則表達式,我在我的數據庫中的字段,我保存了一些照片的絕對網址,因此所有記錄都像http://localhost/my_project/images/picture.jpg現在在我的網站這個記錄不工作中,我應該改變的所有記錄喜歡這個「http://www.mysite.com/images/picture.jpg」,所以我發現MySQL的replace的命令,但該命令將取代領域的各個部分:變化部分與MySQL的

UPDATE tablename SET tablefield = replace(tablefield, "findstring", "replacestring"); 

我怎樣才能改變只是http://localhost/在我的記錄與phpMyAdmin?

回答

0

爲了簡單地剝去'http://localhost'前綴,爲了使用無主機絕對路徑作爲推薦@Rob's answer

UPDATE tablename 
SET tablefield = SUBSTR(tablefield FROM 17) 
WHERE tablefield LIKE 'http://localhost/%' 

查看它sqlfiddle

要使用'http://www.mysite.com'替換爲要求在原來的問題:

UPDATE tablename 
SET tablefield = CONCAT('http://www.mysite.com', SUBSTR(tablefield FROM 17)) 
WHERE tablefield LIKE 'http://localhost/%' 

看到它的sqlfiddle

當然,這些答案都沒有使用正則表達式按照您的問題標題中的要求(儘管它們使用簡單模式匹配);要使用正則表達式模式替換,您需要安裝和使用UDF,例如lib_mysqludf_preg提供的UDF。

1

首先,你應該從你所有的網址的域名去除。簡單使用/images/picture.jpg將允許它在所有主機上工作。

要全局替換它,我建議做一個mysqldump和在文本編輯器打開該文件,替換字符串,將其導入到數據庫。假設你的數據庫中沒有任何序列化的字符串(wordpress)。