интервал совпадения регулярного выражения оракула - PullRequest
0 голосов
/ 05 мая 2019

Я хочу узнать все имя, которое содержит минимум 2 последовательных а и не более 3 последовательных а.

Я написал запросы, но не выполнил требование.

Пожалуйста, посмотритеПриведенные ниже запросы

SELECT FIRST_NAME,LAST_NAME
FROM EMPLOYEES
WHERE REGEXP_LIKE(FIRST_NAME,'a{2,3}')

Вывод: enter image description here

Но мне нужен только "Срикрушнааа".

Спасибо.

Ответы [ 3 ]

3 голосов
/ 05 мая 2019

Вы можете использовать

WHERE REGEXP_LIKE(FIRST_NAME,'([^a]|^)a{2,3}([^a]|$)')

Подробности

  • ([^a]|^) - любой символ, кроме a или начало строки
  • a{2,3} - 2 или 3 a s
  • ([^a]|$) - любой символ, кроме a или конца строки

См. regex demo и график регулярных выражений :

enter image description here

3 голосов
/ 05 мая 2019

Я бы просто сделал:

WHERE FIRST_NAME LIKE '%aa%' AND
      FIRST_NAME NOT LIKE '%aaaa%'

Регулярные выражения не нужны для этого.

0 голосов
/ 05 мая 2019

AND в секунду regexp_like, который проверяет более трех 'a' с.

SELECT FIRST_NAME,
       LAST_NAME
       FROM EMPLOYEES
       WHERE REGEXP_LIKE(FIRST_NAME,'a{2,3}')
             AND NOT REGEXP_LIKE(FIRST_NAME,'a{4,}');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...