站点图标 谷姐靓号网

[已解决]求助个SQL命令(正则)-siyi

Rate this post

已经顺利解决,感谢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元请大佬帮帮忙,经费有限,先到先得。万分感谢!

热议
推荐楼 liuyangge

可以先改下id测试一下看看,没问题把where条件删掉,全部跑一遍就ok了

推荐楼 pi9 4小时前

好久没用WP了,随手给你写一个,表名和字段是按照我记忆来的。

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

执行前先备份一下这张表。

推荐楼 siyi 5小时前

为什么要随机?

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

表达不清哈,意思就是要删除-1920x1080之类的。因为图片大小不一样,所以产生的缩略图尺寸也是随机的呀。
可能是-1024x768或者-300x200, 不一定。

2楼 唐王李世民 5小时前

为什么要随机?

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

sql不懂

3楼 airline 5小时前

你家一包烟50

5楼 siyi 5小时前

你家一包烟50

我不抽烟……
反正看别人抽的烟大概这个价格?

6楼 airline 5小时前

我不抽烟……
反正看别人抽的烟大概这个价格?

有钱人像我们这种穷人连十块的都抽不起

7楼 airline 5小时前

这边建议php遍历然后替换
截取-到.png之间的字符然后前面拼接上- replace一下就行了

8楼 siyi 5小时前

这边建议php遍历然后替换
截取-到.png之间的字符然后前面拼接上- replace一下就行了 ...

有没有那种能喂到嘴里的那种?

9楼 van 5小时前

你这个url是存在db里面的吗?

12楼 siyi 4小时前

你这个url是存在db里面的吗?

是啊,存在mysql里
wp_posts表的post_content字段里。

13楼 siyi 4小时前

不用正则,update + replace函数即可

不行的哦,因为图片大小不是固定的,所以后面不一定是-1920x1080,可能是800x1080,1200x1080,1920x300, 1920x1000 各种可能。

14楼 siyi 4小时前

先备份数据库

https://hostloc.com/thread-844936-1-1.html

这个不行哦
replace("字符串", "被替换内容","替换内容")
被替换内容怎么填,分辨率随机的呢。

15楼 airline 4小时前

有没有那种能喂到嘴里的那种?

懒得写

16楼 落英缤纷 4小时前

这个不行哦
replace("字符串", "被替换内容","替换内容")
被替换内容怎么填,分辨率随机的呢。 ...

那就替换多次啊看看有几种分辨率

17楼 siyi 4小时前

那就替换多次啊看看有几种分辨率

不是啊,有6万多张图片呢,什么分辨率的都有,不一定是标准尺寸的。
可能是1920 也可能是1919,1918 1921……

18楼 pi9 4小时前

好久没用WP了,随手给你写一个,表名和字段是按照我记忆来的。

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

执行前先备份一下这张表。

19楼 liuyangge 4小时前

不行的哦,因为图片大小不是固定的,所以后面不一定是-1920x1080,可能是800x1080,1200x1080,1920x300,...

喔 没注意看题,如果尺寸少一些的话 多跑几次就好了,多的话用其他语言跑一下就好了

20楼 siyi 4小时前

好久没用WP了,随手给你写一个,表名和字段是按照我记忆来的。

update wp_posts set post_content = REGEX ...

大佬,我的是mysql5.7 不是mysql8,没有regexp_replace怎么办

22楼 uzerhode 4小时前

寻找第一个'-',把它及之后全删了,再新字段加个.png
这个要正则么?

23楼 pi9 4小时前

本地装个8 把数据修复了再导回线上。 你这个需求不用我那个函数,修复不了

24楼 siyi 4小时前

本地装个8 把数据修复了再导回线上。 你这个需求不用我那个函数,修复不了 ...

好的,我试试看能不能用自定义函数。

25楼 本人马保国 4小时前

帮顶

26楼 siyi 4小时前

寻找第一个'-',把它及之后全删了,再新字段加个.png
这个要正则么?

我有想过,可是有的文件名里面也有"-"

27楼 晴晴晴 4小时前

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

sql正则不太会 自行摸索 没有案例写不出来

28楼 xhcj666 4小时前

不行就全导出来到另外一张表咯,几万行也还好。就可以用你熟悉的语言做正则表达式替换了

29楼 暗贱难防 4小时前

前缀长度一样吗,一样的话,直接从坐标截取,然后拼上一个后缀就行,这种一次性的工作,怎么简单方便怎么来

30楼 暗贱难防 4小时前

left(str, length)CONCAT(string1,string2,...) 这两函数

申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。

退出移动版