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

MySQL查询表中含URL的行REGEXP报重复操作数无效错误怎么解决?

报错原因

你遇到的#1139报错是因为MySQL 8.0版本以前的REGEXP运算符不支持非捕获组语法(?:...),你的正则语句中使用了非捕获组,是触发该错误的直接原因。

修复后的SQL语句

把正则中的非捕获组替换为普通捕获组即可正常执行,同时为了避免关键字冲突,建议用反引号包裹表名和字段名:

SELECT * FROM `table` WHERE `text` REGEXP '((http|ftp|https)://([\\w_-]+((\\.[\\w_-]+)+))([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?)'

如果你使用的是MySQL 8.0及以上版本,也可以使用兼容性更好的REGEXP_LIKE函数:

SELECT * FROM `table` WHERE REGEXP_LIKE(`text`, '((http|ftp|https)://([\\w_-]+((\\.[\\w_-]+)+))([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?)')

上述语句可以正常匹配到你示例中包含URL的字段内容,筛选结果符合预期。

注意事项
  • MySQL正则语法中/不属于特殊字符,不需要额外添加反斜杠转义
  • 涉及表名、字段名与MySQL保留关键字重名时,必须用反引号包裹避免语法错误

内容的提问来源于stack exchange,提问作者KANAYO AUGUSTIN UG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:54:04