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数字精确匹配不起作用的主要内容,如果未能解决你的问题,请参考以下文章
oracle通过添加regexp_like将字符串连接到数字不起作用
jQuery:无法使用 RegExp 精确搜索“+3.00”或“-3.00”