全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[Windows VPS] [已解决]求助个SQL命令(正则)

[复制链接]
跳转到指定楼层
1#
发表于 2021-7-5 11:00:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 siyi 于 2021-7-5 12:49 编辑

已经顺利解决,感谢18楼 pi9 大佬的指导。已经顺利解决了。
也感谢各位MJJ集思广益,提供了很多的方法。





需求:

由于突发奇想把WordPress自动生成的缩略图片都删除了,只保留原图,现在网站很多文章显示错误。想要通过SQL命令修复一下。

目前文章的图片是:https://example.com/wp-content/uploads/2021/07/73194819431-1920x1080.png,由于缩略图已经删除,所以得改成https://example.com/wp-content/uploads/2021/07/73194819431.png才能访问。
也就是需要删除"-1920x1080", 文件名随机,缩略图尺寸随机,文件名后缀随机。
估计需要用到正则,不过我完全不会。

50元请大佬帮帮忙,经费有限,先到先得。万分感谢!
推荐
发表于 2021-7-5 11:31:14 | 只看该作者
不用正则,update + replace函数即可

  1. update 表名 set 字段名 = replace(字段名,"-1920x1080","") where id = 1
复制代码


可以先改下id测试一下看看,没问题把where条件删掉,全部跑一遍就ok了
推荐
发表于 2021-7-5 11:53:07 | 只看该作者
好久没用WP了,随手给你写一个,表名和字段是按照我记忆来的。

update wp_posts set post_content = REGEXP_REPLACE(post_content, '\-[0-9]{3,5}x[0-9]{3,5}', '')  where 1;

执行前先备份一下这张表。
推荐
 楼主| 发表于 2021-7-5 11:05:30 | 只看该作者
唐王李世民 发表于 2021-7-5 11:03
为什么要随机?

这个可能需要遍历,然后删除-1920x1080

表达不清哈,意思就是要删除-1920x1080之类的。因为图片大小不一样,所以产生的缩略图尺寸也是随机的呀。
可能是-1024x768或者-300x200, 不一定。
31#
发表于 2021-7-5 12:43:44 | 只看该作者
上面很多人的解决方案,都认为那个字段只存了 1 个或 n 个 url,没考虑到会有其他文字的情况,这些人的解决方案都是错的,这种情况只能用正则,也就是我这条 SQL:

update wp_posts set post_content = REGEXP_REPLACE(post_content, '\-[0-9]{3,5}x[0-9]{3,5}', '')  where 1;


所以,上面这条 SQL 是最优也是最简单的方案,实现有两个方法:

1、本地装 mysql 8.0,线上数据拉取到本地,执行上面 SQL,数据修复后,线上替换成新数据。
2、参考 https://blog.csdn.net/qq_35861801/article/details/103183360  ,给 mysql 5.7 自定义函数,然后线上直接替换。

至于数据拖出来用 PHP 等脚本来跑,这种方案太繁琐,不至于。
30#
发表于 2021-7-5 12:35:47 来自手机 | 只看该作者
left(str, length)  CONCAT(string1,string2,...) 这两函数
29#
发表于 2021-7-5 12:34:00 来自手机 | 只看该作者
前缀长度一样吗,一样的话,直接从坐标截取,然后拼上一个后缀就行,这种一次性的工作,怎么简单方便怎么来
28#
发表于 2021-7-5 12:24:33 | 只看该作者
不行就全导出来到另外一张表咯,几万行也还好。就可以用你熟悉的语言做正则表达式替换了
27#
发表于 2021-7-5 12:21:02 | 只看该作者
本帖最后由 晴晴晴 于 2021-7-5 12:22 编辑

寻找倒数第一个'-',把它及之后全删了,再获取倒找. 取其后面全部

sql正则不太会 自行摸索 没有案例写不出来
26#
 楼主| 发表于 2021-7-5 12:16:41 | 只看该作者
uzerhode 发表于 2021-7-5 12:05
寻找第一个'-',把它及之后全删了,再新字段加个.png
这个要正则么?

我有想过,可是有的文件名里面也有"-"
25#
发表于 2021-7-5 12:16:15 | 只看该作者
帮顶
24#
 楼主| 发表于 2021-7-5 12:13:57 | 只看该作者
pi9 发表于 2021-7-5 12:08
本地装个8 把数据修复了再导回线上。 你这个需求不用我那个函数,修复不了 ...

好的,我试试看能不能用自定义函数。
23#
发表于 2021-7-5 12:08:32 来自手机 | 只看该作者
本地装个8 把数据修复了再导回线上。 你这个需求不用我那个函数,修复不了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-3 04:01 , Processed in 0.064389 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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