2013-04-26 134 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]+.*";