我有这个查询:
SELECT foo FROM bar WHERE foo REGEXP '[[:digit:]]{10}';
返回CCD_ 1行,其中CCD_。
如果我尝试使用[0-9]{10}
,也会发生同样的情况。这就好像它没有考虑{10}
来精确匹配那些foo只包含10位数字的行。
期望的正则表达式应该是匹配的值,如:
1231231231
只有数字,10个字符,但不是。
foo
是字符串列。我使用的是mysql版本14.14 Distrib 5.7.26,用于Linux(x86_64(。
在正则表达式模式周围放置锚点。此外,我更喜欢使用[0-9]
来表示任何数字,因为它更易于移植到其他regex风格。
SELECT foo
FROM bar
WHERE foo REGEXP '^[0-9]{10}$';
注意,我还在模式周围放置了^
和$
锚,以确保整个foo
列必须是十位数字。