2014-07-10 23 views
0

我需要用一个不同的数据库替换多个数据库中只有一个URL的域。例如,当前的URL类似于www.myoldsite.com/index?s=something,我只需要替换域名,使它们看起来像www.mynewsite.com/index?s=something等等。它甚至有可能在MySQL中做到这一点?如何替换sql数据库中的单词

我知道如何更新,并在表中有这个一定价值,但不只是他们的一部分,所有行集满值:

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

我可以在这种情况下怎么办?

谢谢。

回答

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/%'; 
+0

谢谢你,那太棒了。 –

1

我认为你正在寻找的东西像

UPDATE MyTable 

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

WHERE SomeOtherColumn LIKE '%PATTERN%' 
+0

+1没有勺子喂食的好回答 – Noah

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子句在这里可能是不必要的,但可能对refe有好处伦斯