mysql - 检查字符串是否包含超过 5 位的数字
问题描述
我正在尝试构建一个查询来检查字符串是否包含至少超过 5 个连续数字。
询问;
SELECT count(id) as gV FROM someTable WHERE ... title REGEXP '(\d{5,})' order by id limit 0,10
样本数据
Some text here 123456 (MATCH)
S0m3 t3xt h3r3
Some text 123 here 345
98765 Some text here (MATCH)
Some12345Text Around (MATCH)
期望的输出
3 (Some text here 123456, 98765 Some text here, Some12345Text Around)
MySQL 查询中的正则表达式是否有任何特定规则?
解决方案
MySQL 的正则表达式引擎没有实现\d
“数字”表达式,但是您可以将其表示为字符类范围,例如[0-9]
或特殊字符类[[:digit:]]
。{5,}
您尝试的形式支持大括号重复语法。
可用的正则表达式语法在手册中描述
因此,您可以使用以下任何一种形式:
title REGEXP '[0-9]{5,}'
title REGEXP '[[:digit:]]{5,}'
例子:
不匹配:
> SELECT '123' REGEXP '[[:digit:]]{5,}';
+--------------------------------+
| '123' REGEXP '[[:digit:]]{5,}' |
+--------------------------------+
| 0 |
+--------------------------------+
> SELECT '1X345' REGEXP '[0-9]{5,}';
+--------------------------------+
| '123' REGEXP '[0-9]{5,}' |
+--------------------------------+
| 0 |
+--------------------------------+
匹配示例:
> SELECT '98765 Some text here' REGEXP '[[:digit:]]{5,}';
+-------------------------------------------------+
| '98765 Some text here' REGEXP '[[:digit:]]{5,}' |
+-------------------------------------------------+
| 1 |
+-------------------------------------------------+
> SELECT 'Some text here 123456' REGEXP '[0-9]{5,}';
+--------------------------------------------+
| 'Some text here 123456' REGEXP '[0-9]{5,}' |
+--------------------------------------------+
| 1 |
+--------------------------------------------+
1 row in set (0.00 sec)
推荐阅读
- sapui5 - 从 fiori 启动板启动时,详细视图无法第二次显示
- javascript - 通过移动浏览器在 whats-app 上共享内容时面临数据绑定问题
- sql - 如何在没有“STRUCT 中不存在字段名称步骤”的情况下在 bigquery 中查询结构类型?
- ios - ios中ARKit2.0中物体识别有哪些限制?
- python - 选择表类的特定子项
- c# - Azure 是否支持 NReco pdf 生成器?
- javascript - 根据年份获取元素总和
- python - 向 sql 表中插入“sql 查询”
- android - 在android中重新加载活动而不关闭应用程序
- javascript - 如何删除表格的单元格边框?