Sql 正则表达式;a{2}”是;不起作用
我有一张emp_name=“Rajat”的记录,它不会被退回 我的问题是——Sql 正则表达式;a{2}”是;不起作用,sql,regex,database,Sql,Regex,Database,我有一张emp_name=“Rajat”的记录,它不会被退回 我的问题是—— SELECT * FROM employees WHERE emp_name regexp "a{2}" 请解释为什么它不工作a{2}表示两个连续的as。你的字符串与它不匹配 要将字符串与两个可能不是连续字符的a字符进行匹配,您应该使用a.*aa{2}将匹配两个直接a字符,即:aa 要匹配2个备用a字符,您可以使用: select * from employees where emp_name REGEXP "^.*
SELECT * FROM employees WHERE emp_name regexp "a{2}"
请解释为什么它不工作
a{2}
表示两个连续的a
s。你的字符串与它不匹配
要将字符串与两个可能不是连续字符的
a
字符进行匹配,您应该使用a.*a
a{2}
将匹配两个直接a
字符,即:aa
要匹配2个备用
a
字符,您可以使用:
select * from employees where emp_name REGEXP "^.*a.*a.*$";
您的正则表达式搜索
aa
您需要的是:
a.*a
我想你需要的是:
类似
-简单的模式匹配
字符描述%
匹配任意数量的字符,甚至零
字符。
只匹配一个字符类似
模式匹配。。。仅当模式匹配整个值时才成功
因此,您可以使用更具体的
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
来:
在MySQL 3.23.4之前,REGEXP是区分大小写的
从MySQL 3.23.4开始,如果您真的想强制进行REGEXP比较
为了区分大小写,请使用BINARY关键字使
字符串一个二进制字符串
谢谢亚历克斯,谢谢你的帮助谢谢斯特里比雪夫,谢谢你的帮助谢谢佩德罗,谢谢你的帮助谢谢马克,谢谢你的帮助
SELECT * FROM employees WHERE emp_name REGEXP BINARY 'a.*a';