mysql - MySQL:删除 WordPress 上传路径之间的数字字符串
问题描述
长话短说.. WordPress S3 卸载插件留下了一些图像,例如 /uploads/2020/10/182739640/filename-e324923424.jpg
随机数字符串 (182739640) 不固定。它有几个数字组合。
我正在寻找一种解决方案,以在 /uploads/2020/10/ 之后和 /filename.jpg 之前定位和删除随机数字符串“ 82734642 ”。
所以结果会是;/uploads/2020/10/filename-e324923424.jpg
当我查看论坛时,我确实找到了这个;https://stackoverflow.com/a/36492830/7142359,尽管这可能会在以后删除完整路径中的所有数字 - 这是我不想要的。
对此提供一些帮助会有所帮助。
提前致谢。
解决方案
我了解您需要删除倒数第二个和倒数第三个斜杠之间的所有数值。由于这看起来像是一次性练习,我建议直接在数据库上执行此操作(一旦在本地数据库上测试过)
您需要在查询中使用 REPLACE 方法,并通过使用 SUBSTRING_INDEX 获取不需要的数值来定位它们。
UPDATE 查询: UPDATE images SET title = REPLACE(title, concat(substring_index(substring_index(title, "/", -2), "/", 1), "/"), "")
假设表名是 images。根据需要更改 假设提交的名称是标题。根据需要更改“SET”允许您更新字段“REPLACE”允许您替换字符串(REF . https://www.w3resource.com/mysql/string-functions/mysql-replace-function.php)“concat " 允许您在末尾使用斜杠连接目标数字字符串 “SUBSTRING_INDEX”允许您使用分隔符拆分值,在本例中为“/”。值得添加一个 where 子句以仅在几条记录上运行更新查询。
注意:请在运行更新之前运行选择查询,以查看您是否获取了正确的字符串。
例如。SELECT title as title_before, substring_index(substring_index(title, "/", -2), "/", 1) as string_to_be_replaced, REPLACE(title, concat(substring_index(substring_index(title, "/", -2), "/ ", 1), "/"), "") as title_after FROM images 如果您注意到 title_after 是正确的,则继续在本地数据库上运行更新查询 a) 使用 WHERE 子句将更新限制为少数记录. b) 备份表后,然后在生产环境中运行它。
希望这可以帮助。
推荐阅读
- python - 如何结合 Django 的“LoginRequiredMixin”和表单工具的“FormPreview”?
- c# - “全局元素......已经被声明”错误
- tcl - 如何防止第二个对话框关闭之前打开的对话框
- logout - 如何使用 xml 配置 ADFS 端点响应 URL
- node.js - 不添加日历和守望者
- c# - 用 System.IO.File.ReadAllLines 和一个可变的文件名 c# 填充列表框
- akka - 配置具有最大实例总数的集群感知路由器
- vba - vba userform多列复制并粘贴到工作表中
- c# - 如何使用 c# 重新索引 solr?
- azure - 由于 VSTS 中的两种不同操作系统配置而导致错误部署