我只需要用不同的数据库替换数据库的许多行中存在的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/';
在这种情况下我该怎么办?
谢谢。
答案 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?
所以,你可以更新字符串......
更新
mydatabase
。mytable
设置mycolumn
=替换(mycolumn
,'旧网址','新网址')其中mycolumn
='%old_url%'
必须修改以符合目的。