我有一个包含Id和imgUrl的表。以前,我们有一个特定的网址,例如“http://www.abc.com/images/folder1/12345.jpg”和 “http://www.abc.com/images/folder2/12345.jpg”。现在我们要删除所有列中的网址部分(“http://www.abc.com/images/folder1/”和“http://www.abc.com/images/folder2/”),并希望保留简单的图像名称。我们有大量的数据。
我们想要的是,是否有任何sql脚本,以便它可以循环整个列,修剪网址并仅保留图像名称并更新字段?
答案 0 :(得分:2)
我找到了解决方案。
UPDATE TableName
SET url = RIGHT(url, LOCATE('/', REVERSE(url)) - 1)
http://sqlfiddle.com/#!2/ba155/1
归功于John Woo!
答案 1 :(得分:2)
MySQL SUBSTRING_INDEX()
函数在这种情况下非常方便
UPDATE table1
SET imgurl = SUBSTRING_INDEX(imgurl, '/', -1)
-- WHERE imgurl LIKE 'http://%'
输出:
| ID | IMGURL | |----|-----------| | 1 | 12345.jpg | | 2 | 12345.jpg |
您可能希望使用WHERE
将更新仅限制为尚未更新的行
这是 SQLFiddle 演示
答案 2 :(得分:0)
尝试查看REGEXP_REPLACE:https://launchpad.net/mysql-udf-regexp
然后,您只需使用正则表达式模式进行搜索:http://www.abc.com/images/folder[0-9]/