全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 796|回复: 18
打印 上一主题 下一主题

求一条mysql语句,批量清除无效内容

[复制链接]
跳转到指定楼层
1#
发表于 2021-3-5 16:54:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Hellonet 于 2021-3-5 16:59 编辑

pre_forum_post 表里面 其中一个字段 message 内 有多个不规则的内容

如下:


这中间的数字是不规则的,0-99999* 都有 这些数字是图片地址,但图片已失效了,帖子是空白的,所以想清理掉。

(正常输出空白了),就像下面这样






现在只知道discuz批量替换关键词的语句是 UPDATE pre_forum_post SET message=REPLACE(message,'存在的旧词组','替换后的词组');

怎么删除所有帖子里面的 [attach]*[/attach]  代码,保留其他正常文字内容。

求一条语句批量清空 谢谢!


来自 8#
发表于 2021-3-5 17:39:52 | 只看该作者
本帖最后由 518 于 2021-3-5 17:56 编辑

UPDATE pre_forum_post SET message=REPLACE(message,SUBSTRING(message,LOCATE('[attach]',message),LOCATE('[/attach]',message)),'');

上面错了
这个应该差不多
UPDATE pre_forum_post SET message=REPLACE(message,SUBSTRING(message,LOCATE('[attach]',message),LOCATE('[/attach]',message)-LOCATE('[attach]',message)+9),'');

点评

谢谢大佬解决了我的难题  发表于 2021-3-5 17:47
推荐
发表于 2021-3-5 17:13:13 | 只看该作者
UPDATE pre_forum_post SET message=null WHERE message REGEXP '^[attach][0-9]+[/attach]$';
2#
发表于 2021-3-5 17:02:19 | 只看该作者
先备份数据,然后试试truncate 表名
3#
发表于 2021-3-5 17:05:20 | 只看该作者
用PHP正则吧
4#
 楼主| 发表于 2021-3-5 17:06:35 | 只看该作者
tiane12 发表于 2021-3-5 17:02
先备份数据,然后试试truncate 表名

大佬,好像不行,这个命令是删除这个表的所有内容
我想要实现这样
删除所有帖子里面的 [attach]*[/attach] 代码  * 是任意数字,不知道有没有通配符什么的,我不懂操作

需要保留帖子的其他正常内容。
7#
 楼主| 发表于 2021-3-5 17:20:00 | 只看该作者
feeeei 发表于 2021-3-5 17:13
UPDATE pre_forum_post SET message=null WHERE message REGEXP '^$';

谢谢大佬,不过还是不对,执行后提示 影响了 0 行。
那个代码还在
9#
 楼主| 发表于 2021-3-5 17:42:04 | 只看该作者
feeeei 发表于 2021-3-5 17:13
UPDATE pre_forum_post SET message=null WHERE message REGEXP '^$';

大佬,能否再麻烦你一下,可能我表达的不清楚

message=null 的意思是不是为空的意思?我帖子是有其他需要保留的文字的,例如资源描述和网盘下载地址

替换不成功是不是跟这个null有关系,我不懂怎么写,麻烦大佬再帮我一次,谢谢
10#
发表于 2021-3-5 17:42:35 | 只看该作者
数据量不大,可以来个最没效率的做法,fetch_all后挨个update
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-9-23 20:49 , Processed in 0.072305 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表