mysql 如何查询在任何位置都正好有2个'a'的列中的名称

c7rzv4ha  于 2023-10-15  发布在  Mysql
关注(0)|答案(4)|浏览(112)

假设我有一个表EMP,其中包含,empno,empno,等等任何东西。现在我要查询emp的名字中有两个a的地方。
我尝试了以下方法

select ename from emp where ename like "%a%a";

由于“%”的原因,此查询返回了多于2个“a”。
所以,请大家多多参与!!

92vpleto

92vpleto1#

您可以添加一个条件,排除出现两次以上的情况:

where ename like '%a%a%'
and   ename not like '%a%a%a%'
w46czmvw

w46czmvw2#

REGEXP_COUNT的用法如下:

SELECT *
FROM EMP
WHERE REGEXP_COUNT(ENAME, 'a', 1, 'i') = 2 -- case insensitive
-- REGEXP_COUNT(ENAME, 'a') = 2 - if you want case sensitive comparision

干杯!干杯!

nszi6y05

nszi6y053#

如果你使用的是支持REGEXP_REPLACE的MySQL或MariaDB版本,你也可以这样做:

SELECT ename FROM emp
WHERE LENGTH(REGEXP_REPLACE(na,'[b-zB-Z]',''))=2;

如果在这里的替换条件'[b-zB-Z]'中省略字符aA,则使用LENGTH来定义仅当aA出现两次时才显示结果。
否则,我已经测试了@Akina的方法(在评论中),无论任何MySQL/MariaDB版本,它都能很好地工作。

nfzehxib

nfzehxib4#

显示姓名中有2个A的员工

select * from employee where length(emp_name)- length(replace(upper(emp_name),“A”,''))= 2;

相关问题