Вот регулярное выражение синтаксиса для адреса электронной почты, в том числе котировки
'[a-zA-Z0-9._%-][email protected][a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}'
Таким образом, вы можете использовать REGEXP_LIKE() в, где положение или REGEXP_SUBSTR(), чтобы проверить, содержит ли поле действительный адрес электронной почты. Вот пример: вы увидите, что regexp_substr() возвращает NULL на адрес, отсутствующий .domain, что не позволяет проверить подстроку. Оттуда вы можете построить проверочное ограничение вокруг него, или применять его, используя триггер (гадость) и т.д.
SQL> desc email
Name Null? Type
----------------------------------------- -------- ----------------------------
EMAIL_ID NUMBER
EMAIL_ADDRESS VARCHAR2(128)
SQL> select * from email;
EMAIL_ID EMAIL_ADDRESS
---------- ----------------------------------------
1 [email protected]
2 [email protected]
3 [email protected]
4 [email protected]_domaindotorg
SQL> @qry2
SQL> column email_address format a40
SQL> column substr_result format a30
SQL> SELECT email_address
2 , regexp_substr(email_address,'[a-zA-Z0-9._%-][email protected][a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}') substr_result
3 FROM email
4/
EMAIL_ADDRESS SUBSTR_RESULT
---------------------------------------- ------------------------------
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected]_domaindotorg
Используя те же данные, вот запрос, который ограничивает только действительные адреса электронной почты, используя REGEXP_LIKE
SQL> column email_address format a40
SQL> column substr_result format a30
SQL> SELECT email_address
2 FROM email
3 WHERE REGEXP_LIKE (email_address, '[a-zA-Z0-9._%-][email protected][a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}');
EMAIL_ADDRESS
----------------------------------------
[email protected]
[email protected]
[email protected]
Поиск по странице содержимого SQL Reference для регулярного выражения, чтобы увидеть поддержку регулярных выражений.
спасибо, вот полезно - я просто наткнулся на некоторую информацию оракула, который связывает с вашим 10г или высший рег-контроль проверки - http://www.oracle.com/technology/oramag/webcolumns/2003/techarticles/rischert_regexp_pt2.html – 2009-04-24 20:26:03
@oej ссылка выше была удалена –