0

我有一个包含 Id 和 imgUrl 的表。以前,我们有一个特定的 URL,例如“ http://www.abc.com/images/folder1/12345.jpg ”和“ http://www.abc.com/images/folder2/12345.jpg ”。现在我们要删除所有列中的 url 部分(“ http://www.abc.com/images/folder1/ ”和“ http://www.abc.com/images/folder2/ ”)并希望保留简单的图像名称。我们有这方面的大量数据。

我们想要的是,是否有任何 sql 脚本,以便它可以循环整个列,修剪 url,只保留图像名称并更新字段?

4

3 回答 3

2

我找到了解决方案。

UPDATE TableName
SET url = RIGHT(url, LOCATE('/', REVERSE(url)) - 1)

http://sqlfiddle.com/#!2/ba155/1

所有功劳归于吴宇森!

于 2013-09-29T06:14:40.950 回答
2

MySQLSUBSTRING_INDEX()函数在这种情况下非常方便

UPDATE table1
   SET imgurl = SUBSTRING_INDEX(imgurl, '/', -1)
-- WHERE imgurl LIKE 'http://%'

输出:

| 身份证 | 图片网址 |
|----|------------|
| 1 | 12345.jpg |
| 2 | 12345.jpg |

您可能希望将WHERE更新限制为仅对尚未更新的行

这是SQLFiddle演示

于 2013-09-29T06:17:08.580 回答
0

尝试查看 REGEXP_REPLACE:https ://launchpad.net/mysql-udf-regexp

然后,您可以简单地使用正则表达式模式进行搜索:http://www.abc.com/images/folder[0-9]/

于 2013-09-29T05:59:47.650 回答