Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 正则表达式;a{2}”是;不起作用_Sql_Regex_Database - Fatal编程技术网

Sql 正则表达式;a{2}”是;不起作用

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 "^.*

我有一张emp_name=“Rajat”的记录,它不会被退回

我的问题是——

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';