如何替换SQL数据库中的单词

时间:2014-07-10 02:32:16

标签: mysql replace

我只需要用不同的数据库替换数据库的许多行中存在的URL的域。例如,当前的URL类似于www.myoldsite.com/index?s=something,我只需要替换域名,以便它们看起来像www.mynewsite.com/index?s=something等等。甚至可以在mysql中做到这一点?

我知道如何更新和设置具有特定值的表中所有行的完整值,但不仅仅是其中的一部分:

UPDATE `mydatabase`.`mytable` SET `mycolumn` = 'http://mynewsite.com/' WHERE `mycolumn` = 'http://myoldsite.com/';

在这种情况下我该怎么办?

谢谢。

4 个答案:

答案 0 :(得分:2)

是。使用函数replace()

UPDATE mydatabase.mytable
    SET mycolumn = replace(mycolumn, 'http://myoldsite.com', 'http://mynewsite.com/')
    WHERE `mycolumn` like 'http://myoldsite.com/%';

如果旧网站在网址中出现不止一次,这并不完美。

也许更好的方法是:

UPDATE mydatabase.mytable
    SET mycolumn = concat('http://mynewsite.com/',
                          substr(mycolumn, length('http://myoldsite.com/')
                         )
    WHERE `mycolumn` like 'http://myoldsite.com/%';

答案 1 :(得分:1)

我认为你正在寻找像

这样的东西
UPDATE MyTable

SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')

WHERE SomeOtherColumn LIKE '%PATTERN%'

答案 2 :(得分:0)

找到匹配项后,您应该使用REPLACE替换域名:

UPDATE mydatabase.mytable 
SET `mycolumn` = REPLACE(mycolumn, 'http://myoldsite.com', 'http://mynewsite.com/') 
WHERE `mycolumn` LIKE 'http://myoldsite.com/%'; -- wildcard on the end

这里可能不需要WHERE子句,但可能适合参考

答案 3 :(得分:0)

你需要看 - > How can I use mySQL replace() to replace strings in multiple records?
所以,你可以更新字符串......

  

更新mydatabasemytable设置mycolumn =替换(mycolumn,'旧网址','新网址')其中mycolumn ='%old_url%'

必须修改以符合目的。