SQL替换url字符串的一部分

时间:2013-04-26 11:44:36

标签: mysql sql replace sql-like

我想替换网址的一部分中的字符。

我的网址

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

例如,我会将所有“o”更改为“1"之后

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

结果将是。

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

我的数据如下: Lorem ipsum dolor坐下来,精致的adipistur elit。 Maecenas nibh est,suscipit vel vestibulum in,bibendum eget erat。 Sed sedimentum auctor vulputate。 Ut malesuada massa eget libero lobortis sodales。 img src =“www.website.com/images/some-image-in-the-folder.jpg” Sed eleifend lobortis nisl坐amet faucibus。 Morbi eu nunc eget sapien pellentesque convallis eget at magna。 Vivamus convallis sem at ante sodales vehicula。 Morbi tempus tortor non leo fermentum scelerisque。

我该怎么做?

MySQL 5.0.95 阿帕奇/ 2.2.3 phpMyAdmin 3.5.7

非常感谢。 我是新来的:/

4 个答案:

答案 0 :(得分: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') 

答案 1 :(得分:0)

此解决方案允许您根据数据库中的值进行搜索(您不需要提供静态字符串):

首先:使用substring_index获取 www.website.com/images/之后的字符串部分

第二次:使用o替换第一步返回的1的所有实例

第三次:使用最终结果更新表格

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

答案 2 :(得分: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-image-in-the-f1lder.jpg'

最后,结论:

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'
    )
  )
;

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

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

答案 3 :(得分:0)

这个对我有用:

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