Анализируйте адрес электронной почты в Oracle, чтобы посчитать количество адресов с 3 или менее символами перед знаком @ - PullRequest
3 голосов
/ 06 июля 2010

Мне нужно посчитать количество адресов электронной почты в БД, которые имеют 3 или менее символов перед знаком @, например ab@test.com.

Функция парсения отсутствует в Oracle иЯ не уверен, как написать регулярное выражение для этого.Любая помощь будет принята с благодарностью!

Ответы [ 4 ]

7 голосов
/ 06 июля 2010

Regex излишне для этого.Все, что вам нужно, это

instr(t.email, '@') < 5 AND instr(t.email, '@') > 0

Отредактировано с исправлением из комментариев.

2 голосов
/ 06 июля 2010

Вы можете определить предложение WHERE и использовать COUNT или пропустить, чтобы использовать вместо него REGEXP_COUNT:

SELECT REGEXP_COUNT(t.email, '^[^@]{0,3}@', 1, 'i') RESULT
  FROM TABLE t;

Использование COUNT:

SELECT COUNT(*)
  FROM TABLE t
 WHERE REGEXP_LIKE(t.email, '^[^@]{0,3}@')

Справка:

2 голосов
/ 06 июля 2010

Требуемое регулярное выражение:

^[^@]{0,3}@

На английском это:

  • Начало строки
  • от 0 до трех вещей, которые не являются знаком.
  • на знак.
1 голос
/ 07 июля 2010

Есть небольшая проблема со следующим instr (t.email, '@') <5 </p>

, этот запрос будет работать при условии, что t.email имеет '@'!в противном случае он также вернет те записи, где t.email не имеет '@'

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