求一个 mysql 数据库替换图片的正规表达式

2023-06-04 11:07:08 +08:00
 python30
数据库文章 body 里有两种图片,一种是<img src="https://www.aaa.com/aa.jpg" />一种是 <img src="https://www.bbb.com/bb.jpg" /> 现在想用一种替换字符把 <img src="https://www.bbb.com/bb.jpg" />
全部替换掉。就是替换为空。请问这样的 mysql 语句怎么写? 哪位朋友处理过?谢谢
1520 次点击
所在节点    程序员
12 条回复
totoro52
2023-06-04 11:15:34 +08:00
REGEXP_REPLACE 函数, 这个是 mysql8 的新函数,低于 8 就不行
UPDATE 表名
SET body = REGEXP_REPLACE(body, 'https://www\.aaa\.com', 'https://www.bbb.com')
WHERE body LIKE '%https://www.aaa.com%';
GPT 写的 SQL ,请自测,LIKE 也可以换为 REGEXP 函数
如果低于 8 ,你还是写代码解决吧,批量读出来替换在批量去更新
totoro52
2023-06-04 11:16:52 +08:00
GPT 写的这个正则应该是 hi 满足不来你这个需求,会把不是图片的也是替换,你改改加个标签上去即可。
python30
2023-06-04 11:30:57 +08:00
@totoro52 mysql5.7 谢谢。这个改改可以用到 5.7 版本上吗?
totoro52
2023-06-04 12:46:22 +08:00
@python30 最低支持 8 ,只有 8 有这个函数, 你 mysql5.7 肯定不行了,用代码去解决吧
rockeyhan
2023-06-04 12:46:40 +08:00
update 'table_name' set 'field_nam' = replace ('field_name','from_str','to_str');

几年前在 MySQL 5.* 上用过,可行。
Leon406
2023-06-04 12:52:03 +08:00
可以参考下, 之前我就是这么做的

UPDATE 表名
SET body = replace (body, 'https://www.aaa.com', '')
Where body REGEXP('<img src="https://www.aaa.com" />')
totoro52
2023-06-04 12:52:32 +08:00
@rockeyhan 那样不是图片的也会被替换了, 不过可以<img src="https://www.aaa.com 改<img src="https://www.bbb.com 这样子 也不是不行 曲线救国
rockeyhan
2023-06-04 12:59:57 +08:00
假设题主说的 body 是 table ,而 content 是 filed:

update body set content = replace(content,'<img src="https://www.aaa.com" />','');

我觉得应该可行。
rockeyhan
2023-06-04 13:02:11 +08:00
哦哦,错了应该是:

update body set content = replace(content,'<img src="https://www.bbb.com/bb.jpg" />','');
python30
2023-06-04 14:06:33 +08:00
@rockeyhan
@totoro52
@Leon406

忘了说明一个情况了
就是图片有很多。而且
都是 https://www.bbb.com/xxx/xxx/xxx.jpg 样式式的,其中的 xxx 可能是数字或字符或组合这样的。不是固定的字符串。
totoro52
2023-06-04 16:22:59 +08:00
@python30 #10 那你没有 8 版本是解决不来这个问题了,replace 函数只是简单的解决替换
你不想更新 8 就把文件导出来 SQL , 然后去 8 上面改完在导入回来, 不想这么麻烦就用代码批量拉下来改 批量更新上去,看你
python30
2023-06-04 21:44:41 +08:00
@totoro52 hao de , xie xie.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/945627

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX