MySQL批量处理图片URL统一去掉域名前缀的方法

 更新时间:2025年11月11日 09:39:40   作者:今天的接口写完了吗?  
文章介绍了如何使用MySQL 8.0的新函数REGEXP_REPLACE()批量处理图片URL,去掉域名前缀,将所有图片路径统一存为相对路径,从而避免路径重复和加载错误,需要的朋友可以参考下

在实际开发中,我们常常遇到这样的情况:数据库里存储的图片路径既有完整 URL,也有相对路径。

例如在一张 article 表里:

idimages
1https://cdn.test.com/uploads/20251103/xxx.jpg
2/uploads/20251104/yyy.png,/uploads/20251104/zzz.png
3https://cdn.test.com/uploads/20251104/aaa.png,/uploads/20251104/bbb.png

如果前端代码统一拼接 CDN 域名,混合存储就会导致路径重复,从而出现加载错误或者多余前缀的问题。

为了统一管理,我们希望把所有图片 URL 统一存成 相对路径,只保留 /uploads/... 部分。

1. MySQL 8.x 提供了 REGEXP_REPLACE

MySQL 8.0 开始,支持 REGEXP_REPLACE() 函数,它可以使用正则批量替换字符串,非常适合处理 URL。

语法:

REGEXP_REPLACE(str, pattern, repl)

str:需要处理的字符串

pattern:正则表达式

repl:替换的内容

2. 示例:批量去掉域名前缀

UPDATE article SET images = REGEXP_REPLACE(images, 'https?://[^,]*(/uploads/[^,]+)', '\\1') WHERE images REGEXP 'https?://[^,]*/uploads/';

解释:

'https?://[^,]*(/uploads/[^,]+)'
  • https?://:匹配 http:// 或 https://
  • [^,]*:匹配 URL 域名部分,直到逗号或 /uploads/
  • (/uploads/[^,]+):捕获 /uploads/... 路径
'\\1'
  • 替换为捕获的 /uploads/... 部分,去掉域名
WHERE images REGEXP 'https?://[^,]*/uploads/'
  • 只处理包含完整域名的记录,避免影响已经是 /uploads/... 的记录

3. 支持单张或多张图片

这条 SQL 适合以下几种情况:

单张图片:

https://cdn.test.com/uploads/20251103/xxx.jpg → /uploads/20251103/xxx.jpg

多张图片(逗号分隔):

https://cdn.test.com/uploads/20251104/aaa.png,/uploads/20251104/bbb.png → /uploads/20251104/aaa.png,/uploads/20251104/bbb.png

已经是相对路径的记录不会改变。

4. 优点

  1. 一次性批量处理:不需要循环或复杂脚本
  2. 兼容单张和多张图片
  3. 避免前端拼接重复域名
  4. 安全可控:只处理包含完整域名的记录

5. 操作步骤建议

操作之前最好备份一下找个表的数据

6. 总结

利用 MySQL 8.x 的 REGEXP_REPLACE,可以轻松实现:

  • 批量去掉图片 URL 前缀
  • 支持单张、多张图片
  • 保证数据库中统一存相对路径

以上就是MySQL批量处理图片URL统一去掉域名前缀的方法的详细内容,更多关于MySQL批量处理图片URL的资料请关注脚本之家其它相关文章!

相关文章

  • MySQL多实例的配置应用实例场景

    MySQL多实例的配置应用实例场景

    在一台服务器上,运行多个数据库服务,这些服务进程通过不同的socket监听不同的服务端口来提供各自的服务,这篇文章主要介绍了MySQL多实例的配置场景分析,需要的朋友可以参考下
    2021-12-12
  • MySQL Explain使用详解

    MySQL Explain使用详解

    这篇文章主要介绍了MySQL Explain使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • mysql线上查询之前要性能调优的技巧及示例

    mysql线上查询之前要性能调优的技巧及示例

    文章介绍了查询优化的几种方法,包括使用索引、避免不必要的列和行、有效的JOIN策略、子查询和派生表的优化、查询提示和优化器提示等,这些方法可以帮助提高数据库性能,减少查询的执行时间和资源消耗,感兴趣的朋友一起看看吧
    2025-03-03
  • Mysql一对多轻松实现追踪历史首条记录

    Mysql一对多轻松实现追踪历史首条记录

    本文介绍了在数据库中处理一对多关系时,如何使用JOIN和WHERE子句来找到每个主表记录对应的子表中特定记录(例如时间最早的记录),通过将B表与自身进行比较并使用MIN()函数,可以精确匹配到所需记录
    2024-12-12
  • Mysql数据库事务概念、操作与隔离级别全解析

    Mysql数据库事务概念、操作与隔离级别全解析

    本文给大家介绍Mysql数据库事务概念、操作与隔离级别全解析,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-10-10
  • MySQL性能优化之一条SQL在MySQL中执行的过程详解

    MySQL性能优化之一条SQL在MySQL中执行的过程详解

    天天和数据库打交道,一天能写上几十条 SQL 语句,但你知道系统是如何和数据库交互的吗?下面这篇文章主要给大家介绍了关于MySQL性能优化之一条SQL在MySQL中执行的过程的相关资料,需要的朋友可以参考下
    2023-02-02
  • MYSQL ON UPDATE CURRENT_TIMESTAMP当字段值发生改变时才会更新记录的时间

    MYSQL ON UPDATE CURRENT_TIMESTAMP当字段值发生改变时才会更

    本文主要介绍了MYSQL ON UPDATE CURRENT_TIMESTAMP当字段值发生改变时才会更新记录的时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • MySQL联结表介绍以及使用详解

    MySQL联结表介绍以及使用详解

    这篇文章主要给大家介绍了关于MySQL联结表介绍及使用的相关资料,联结SQL最强大的功能之一就是能在数据检索查询的执行中联结表,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • InnoDB引擎数据库主从复制同步新的分享

    InnoDB引擎数据库主从复制同步新的分享

    近期将公司的MySQL架构升级了,由原先的一主多从换成了DRBD+Heartbeat双主多从,所以这里也将其心得归纳总结了一下
    2012-11-11
  • MySQL 8.0.19安装详细教程(windows 64位)

    MySQL 8.0.19安装详细教程(windows 64位)

    这篇文章主要介绍了MySQL 8.0.19安装详细教程(windows 64位),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10

最新评论