Как запросить имя в столбце, который имеет ровно 2 «а» в любой позиции - PullRequest
0 голосов
/ 30 января 2020

Предположим, у меня есть таблица EMP, которая содержит, empno, ename и т. Д. c что угодно. Теперь я должен запросить ename emp, где в имени есть 2 «а».

Я попробовал следующее

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

Этот запрос возвращает мне больше 2 'a', благодаря любезности '%'.

Так что любезно добавьте !!

Ответы [ 3 ]

2 голосов
/ 30 января 2020

Вы можете добавить условие, исключающее случаи с более чем 2 случаями:

where ename like '%a%a%'
and   ename not like '%a%a%a%'
1 голос
/ 30 января 2020

Вы можете использовать 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

Ура !!

0 голосов
/ 30 января 2020

Если вы используете MySQL или версию MariaDB, которая поддерживает REGEXP_REPLACE, вы также можете сделать так:

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

Пропуск символа a или A из условия замены здесь '[b-zB-Z]' затем используйте LENGTH, чтобы определить только результат шоу, когда a или A встречаются дважды.

В противном случае, я протестировал метод @ Akina (в комментарии), и он работает очень хорошо независимо от версии MySQL / MariaDB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...