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

如何检索notes列包含连续五位数字的所有数据行?

解决MySQL中匹配连续五位数字的正则查询问题

你原来的思路完全正确,用REGEXP确实能实现这个需求,但问题出在MySQL的正则表达式语法细节上——MySQL不支持\d这个简写来匹配数字,这就是你的语句没生效的核心原因。

正确的查询语句

你可以用以下两种写法快速实现需求:

写法1:直接指定数字范围

SELECT id, name, notes FROM table WHERE notes REGEXP '[0-9]{5}'

写法2:使用POSIX字符类(兼容性更好)

SELECT id, name, notes FROM table WHERE notes REGEXP '[[:digit:]]{5}'

为什么原来的语句不行?

MySQL的正则表达式实现(尤其是8.0之前的版本)遵循POSIX标准,不支持Perl风格的\d简写。要匹配单个数字,你需要:

  • 用[0-9]直接指定0到9的数字范围
  • 或者用POSIX标准的[:digit:]字符类(注意必须放在外层方括号内,写成[[:digit:]])

如果你的MySQL版本是8.0及以上,虽然开始支持部分Perl风格正则,但\d在SQL语句的单引号内需要转义成\\d,写法如下(不过兼容性不如上面两种通用):

SELECT id, name, notes FROM table WHERE notes REGEXP '\\d{5}'

执行结果验证

运行上面的正确语句后,会精准检索出notes列包含连续五位数字的行,和你预期的结果完全一致:

id | name | notes 
2 | person 2 | bla 38728 bla bla 
3 | person 3 | bla83784 bla bla 
4 | person 4 | 73804 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:59:04