Ето синтаксиса на regexp за имейл адрес, включително кавички
'[a-zA-Z0-9._%-]example@sqldat.com[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}'
Така че можете да използвате regexp_like() в клауза where или 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 example@sqldat.com
2 example@sqldat.com
3 example@sqldat.com
4 example@sqldat.com_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._%-]example@sqldat.com[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}') substr_result
3 FROM email
4 /
EMAIL_ADDRESS SUBSTR_RESULT
---------------------------------------- ------------------------------
example@sqldat.com example@sqldat.com
example@sqldat.com example@sqldat.com
example@sqldat.com example@sqldat.com
example@sqldat.com_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._%-]example@sqldat.com[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}');
EMAIL_ADDRESS
----------------------------------------
example@sqldat.com
example@sqldat.com
example@sqldat.com
Потърсете в страницата със съдържание на справочника за SQL за regexp, за да видите поддръжката на регулярен израз.