MySQL REGEXP数字精确匹配不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL REGEXP数字精确匹配不起作用相关的知识,希望对你有一定的参考价值。

我有这个查询:

SELECT foo FROM bar WHERE foo REGEXP '[[:digit:]]{10}';

哪个返回bar行,其中foo的字符数比10长。

[如果我尝试使用[0-9]{10},也会发生同样的情况。就像没有考虑{10}来完全匹配foo仅包含10位数字的那些行。

期望的正则表达式应与以下值匹配:

1231231231

仅数字,10个字符,但不是。

foo是字符串列。我正在使用适用于Linux(x86_64)的mysql Ver 14.14 Distrib 5.7.26。

答案

在您的正则表达式模式周围放置锚点。此外,我更喜欢使用[0-9]来表示任何数字,因为它更易于移植到其他正则表达式中。

SELECT foo
FROM bar
WHERE foo REGEXP '^[0-9]{10}$';

请注意,我还在样式周围放置了^$锚点,以确保整个foo列必须为十位数。

以上是关于MySQL REGEXP数字精确匹配不起作用的主要内容,如果未能解决你的问题,请参考以下文章

RegExp

oracle通过添加regexp_like将字符串连接到数字不起作用

MySQL的REGEXP 和 like 在匹配上的区别

jQuery:无法使用 RegExp 精确搜索“+3.00”或“-3.00”

Javascript RegExp 用于精确匹配具有特殊字符的多个单词

js的RegExp