使用以前的值更新MySQL中的列

时间:2017-09-12 07:34:37

标签: mysql sql database sqlite

我在mysql'url_map'中有一个包含2列的表:id,url,其中填充了一些值。像这样:

+----+-----------------------------------------+ | id | url | +----+-----------------------------------------+ | 1 | http://myserver.mywebsite.com/file1.txt | | 2 | http://myserver.mywebsite.com/file2.txt | +----+-----------------------------------------+

我的要求是使用之前的值将表中每一行的'url'更新为新值。

+----+---------------------------------------------+ | id | url | +----+---------------------------------------------+ | 1 | https://mynewserver.mywebsite.com/file1.txt | | 2 | https://mynewserver.mywebsite.com/file2.txt | +----+---------------------------------------------+

如果您看到更改,则在每一行中,“url”的值都已从

更改
  • http:// to https://
  • myserver to mynewserver

休息其他内容保留在以前的状态。

有人可以帮我写这个查询吗?

5 个答案:

答案 0 :(得分:0)

您可以直接在更新语句中使用以前的值

UPDATE your_table t SET t.url = REPLACE(REPLACE(t.url, 'http://', 'https://'), 'myserver', 'mynewserver')

答案 1 :(得分:0)

我只会做一个UPDATE语句,如:

UPDATE url_map
   SET url = REPLACE(REPLACE(url, 'http', 'https'),'myserver ','mynewserver')

或者如果你想在一个REPLACE中进行(因为http和myserver基本上是一个字符串)

UPDATE url_map
   SET url = REPLACE(url, 'http://myserver', 'https://mynewserver')

答案 2 :(得分:0)

嗯,正如你的例子所说,你可以使用替换方法

Update url_map
Set    url = replace(url, 'http://myserver', 'https://mynewserver');

答案 3 :(得分:-1)

我还没有对此进行测试,但理论上这应该可行:

UPDATE `url_map` SET url = REPLACE(url, "http://myserver", "https://mynewserver")

答案 4 :(得分:-2)

您必须创建一个程序。在程序中循环遍历行并进行更改。有关详细说明,请参阅https://dev.mysql.com/doc/refman/5.7/en/create-procedure.html