我有一个emp_name =“Rajat”的记录,但没有返回。
我的查询是 -
SELECT * FROM employees WHERE emp_name regexp "a{2}"
请解释为什么它不起作用
答案 0 :(得分:0)
a{2}
表示连续两次a
。你的字符串不匹配。
要将字符串与可能不是连续字符的两个a
个字符匹配,您应该使用a.*a
。
答案 1 :(得分:0)
a{2}
将匹配两个a
个字符,即:aa
要匹配2个备用a
字符,您可以使用:
select * from employees where emp_name REGEXP "^.*a.*a.*$";
答案 2 :(得分:0)
您的正则表达式搜索abadc@gmail.comabadc@gmail.comabadc@gmail.comabadc@gmail.comabadc@gmail.comabadc@gmail.comabadc@gmail.comabadc@gmail.comabadc@gmail.comabadc@gmail.com
https://www.regex101.com/r/yA1qA2/1
您需要的是:
aa
答案 3 :(得分:0)
我认为你需要的只是LIKE
with %
:
LIKE
- 简单模式匹配字符描述
%
匹配任意数量的字符,甚至为零 字符
_
只匹配一个字符时才会成功
LIKE
模式匹配...仅在模式匹配整个值
因此,您可以使用更具体的
select * from employees where emp_name like '%a_a%';
或者,更“通用”(允许a
和a
之间的字符数超过1:
select * from employees where emp_name like '%a%a%';
但是,由于在MySQL中, SQL模式默认情况下不区分大小写,因此,您可能必须将REGEXP
与BINARY
一起用于narrow down your search results:
在MySQL 3.23.4之前,REGEXP区分大小写。
从MySQL 3.23.4开始,如果你真的想强制进行REGEXP比较 区分大小写,使用BINARY关键字来制作其中一个 字符串二进制字符串。
SELECT * FROM employees WHERE emp_name REGEXP BINARY 'a.*a';