正则表达式“a {2}”不起作用

时间:2015-05-09 17:22:14

标签: sql regex database

我有一个emp_name =“Rajat”的记录,但没有返回。

我的查询是 -

SELECT * FROM employees WHERE emp_name regexp "a{2}"

请解释为什么它不起作用

4 个答案:

答案 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

https://www.regex101.com/r/hA5yS8/1

答案 3 :(得分:0)

我认为你需要的只是LIKE with %

  

LIKE - 简单模式匹配

     

字符描述
  %匹配任意数量的字符,甚至为零   字符
  _只匹配一个字符

     

LIKE模式匹配...仅在模式匹配整个值

时才会成功

因此,您可以使用更具体的

select * from employees where emp_name like '%a_a%';

或者,更“通用”(允许aa之间的字符数超过1:

select * from employees where emp_name like '%a%a%';

但是,由于在MySQL中, SQL模式默认情况下不区分大小写,因此,您可能必须将REGEXPBINARY一起用于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';