2013-04-26 131 views
0

我想替換部分url中的字符。SQL替換部分url字符串

我的網址

www.website.com/images/some-image-in-the-folder.jpg 

比如我會改變一切「o 」s到「 1"而來的

www.website.com/images/ (always the same) 

結果後會。

www.website.com/images/s1me-image-in-the-f1lder.jpg 

我的數據是如: Lorem ipsum dolor sit amet,consectetur adipis cing elit。 Maecenas nibh est,suscipit vel vestibulum in,bibendum eget erat。 Sed sedmentum auctor vulputate。 Ule malesuada massa eget libero lobortis sodales。 img src =「www.website.com/images/some-image-in-the-folder.jpg」 Sed eleifend lobortis nisl sit amet faucibus。 Morbi eu nunc eget sapien pellentesque convallis eget at magna。 Vivamus convallis sem在前車駕駛汽車。 Morbi tempus tortor非利奧fermentum scelerisque。

我該怎麼做?

的MySQL 5.0.95 的Apache/2.2.3 phpMyAdmin的3.5.7

非常感謝。 林新在此:/

+0

你需要說明你使用的數據庫平臺,是'www.website.com /圖片/'總是一樣的? – 2013-04-26 11:45:34

+0

在MySQL中,這可能是你正在尋找的http://dev.mysql.com/doc/refman/4.1/en/string-functions.html#function_replace – Mike 2013-04-26 11:57:32

+0

哪個是你的數據庫? – TechDo 2013-04-26 12:01:18

回答

0

試試這個,mysql的

SET @url := 'www.website.com/images/some-image-in-the-folder.jpg'; 
SET @notreplace := 'www.website.com/images/'; 

SELECT CONCAT(@notreplace , REPLACE(MID(@url,LENGTH(@notreplace)+1, 
LENGTH(@url)-LENGTH(@notreplace)),'o','1')) 

SQL

DECLARE @url VARCHAR(1000) 
DECLARE @notreplace VARCHAR(1000) 

SET @url = 'www.website.com/images/some-image-in-the-folder.jpg' 
SET @notreplace = 'www.website.com/images/' 

SELECT @notreplace + REPLACE(SUBSTRING(@url,LEN(@notreplace)+1,LEN(@url)-LEN(@notreplace)),'o','1') 
0

該解決方案將允許您根據要搜索的值在數據庫中(你不需要提供一個st ATIC字符串):

首先:使用substring_index得到自帶www.website.com/images/

字符串的部分:與1

替換從第一步驟中返回 o所有實例

第三個:更新表中的最終結果

UPDATE table 
SET yourcolumn = (SELECT Replace((SELECT 
            Substring_index((SELECT yourcolumn 
              FROM yourtable), 
               'www.website.com/images/', 1 
                 )), 'o', '1')); 
0

(此解決方案最有活力的,通過替換每個「O」後最後一個「/」 - 不管URL是什麼)

的問題是,這只是使用REPLACE()將取代所有出現的「o」 - 所以你將不得不分裂字符串,然後取代。讓我們先從分裂:

SELECT SUBSTRING(
    'www.website.com/images/some-image-in-the-folder.jpg', 
    1, 
    CHAR_LENGTH('www.website.com/images/some-image-in-the-folder.jpg') - LOCATE('/', REVERSE('www.website.com/images/some-image-in-the-folder.jpg')) + 1 
); 

這給www.website.com/images/

接下來,抓住內容的正確和替換字符串:

SELECT REPLACE(
    SUBSTRING_INDEX('www.website.com/images/some-image-in-the-folder.jpg', '/', -1), 
    'o', 
    '1' 
); 

這使`'s1me圖像功能於the- f1lder.jpg」

最後,Concat的兩個:

SELECT 
    CONCAT(
    SUBSTRING(
     'www.website.com/images/some-image-in-the-folder.jpg', 
     1, 
     CHAR_LENGTH('www.website.com/images/some-image-in-the-folder.jpg') - LOCATE('/', REVERSE('www.website.com/images/some-image-in-the-folder.jpg')) + 1 
    ) 
    , 
    REPLACE(
     SUBSTRING_INDEX('www.website.com/images/some-image-in-the-folder.jpg', '/', -1), 
     'o', 
     '1' 
    ) 
) 
; 

瞧:www.website.com/images/s1me-image-in-the-f1lder.jpg :)

值得注意的是,所有使用的功能都bianry安全。

0

這一個爲我工作:

update my_table set my_colum = replace(my_colum, "o", "1") 
WHERE post_content REGEXP "http://www\.website\.com/images/.*[o]+.*";