替换MySQL数据库中数据库字段中的字符串(URL)

时间:2014-12-14 13:59:41

标签: mysql

我正在尝试在数据库表中的多个字段中更改域名,但是对语法感到有点困惑

我需要更改一个名为breadcrumbs的表

并更改

表中每个条目的

http://oldurl.comhttp://newurl.com

域名后面当然有完整的网址。

网址显示在两列中。

4 个答案:

答案 0 :(得分:1)

一种简单的方法是使用两个更新:

update breadcrumbs
    set url1 = concat('http://newurl.com', substr(url1, 18))
    where url1 like 'http://oldurl.com%';

update breadcrumbs
    set url2 = concat('http://newurl.com', substr(url2, 18))
    where url2 like 'http://oldurl.com%';

您也可以在一次更新中执行此操作:

update breadcrumbs
    set url1 = (case when url1 like 'http://oldurl.com%'
                     then concat('http://newurl.com', substr(url1, 18))
                     else url1 end),
        url2 = (case when url2 like 'http://oldurl.com%'
                     then concat('http://newurl.com', substr(url2, 18))
                     else url2 end)            
    where url1 like 'http://oldurl.com%' or
          url2 like 'http://oldurl.com%';

答案 1 :(得分:1)

UPDATE breadcrumbs
SET col1 = REPLACE(col1, 'http://oldurl.com', 'http://newurl.com'),
    col2 = REPLACE(col2, 'http://oldurl.com', 'http://newurl.com')

答案 2 :(得分:1)

UPDATE `breadcrumbs`
SET `column` = REPLACE(`column`, 'http://oldurl.com', 'http://newurl.com');

对于要替换字符串的每个column执行此操作。

请参阅MySQL手册中的String Functions: REPLACE()

答案 3 :(得分:1)

update breadcrumbs
set url1 = replace(url1, 'oldurl.com', 'newurl.com'),
url2 = replace(url2, 'oldurl.com', 'newurl.com')
where url1 like 'http://oldurl.com%'
or url2 like 'http://oldurl.com%'