You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中REPLACE语句能否用通配符?单语句批量替换URL方法

解决MySQL中URL列批量替换的问题,及REPLACE通配符说明

嘿,我来帮你搞定这个问题!先给你梳理清楚两个核心点:

一、MySQL的REPLACE()函数不支持通配符

REPLACE()是完全匹配字符串的替换工具,它只会替换和你指定内容完全一致的片段,没办法用*或?这类通配符做模糊匹配。这也是你之前需要写两条REPLACE语句的原因——/abc1/和/abc10/是两个不同的完整字符串,REPLACE没法一次性识别它们的共性。

二、用单条语句完成批量替换的方案

如果你的MySQL版本是8.0及以上,推荐用REGEXP_REPLACE()函数,它支持正则表达式匹配,刚好能处理这种“abc后跟任意数字”的模糊替换场景。

具体SQL语句如下:

UPDATE your_table_name
SET url_column = REGEXP_REPLACE(url_column, '^/abc\\d+/', '/xyz/');

正则表达式解析:

  • ^:匹配字符串开头,确保只替换URL起始部分的/abc数字/片段
  • /abc:匹配固定前缀
  • \\d+:匹配一个或多个连续数字(MySQL正则里的转义符是双反斜杠)
  • /:匹配数字后的斜杠

不管是/abc1/pqr、/abc10/pqr,甚至是/abc1234/pqr,都会被统一替换成/xyz/pqr,一次操作就能覆盖所有符合规则的内容。

如果你用的是MySQL 5.x版本(无REGEXP_REPLACE)

可以结合字符串函数实现,适合URL结构固定的场景:

UPDATE your_table_name
SET url_column = CONCAT('/xyz/', SUBSTRING_INDEX(url_column, '/', -1))
WHERE url_column LIKE '/abc%/pqr';

逻辑是先筛选出符合格式的行,拆分出URL最后一段(比如pqr),再和/xyz/拼接成目标格式。不过这种方法灵活性不如正则,优先建议升级到8.0版本使用正则替换。

内容的提问来源于stack exchange,提问作者compcc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:17:57