Oracle
 sql >> база данни >  >> RDS >> Oracle

валидиране на полета за имейл / пощенски код в sql/oracle

Ето синтаксиса на 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, за да видите поддръжката на регулярен израз.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да се свържа със сървър на Oracle Database 11g чрез ssh тунелна верига (двоен тунел, сървър в мрежата на компанията)?

  2. Как да намеря привилегиите и ролите, предоставени на потребител в Oracle?

  3. oracle свързване от множество родители

  4. Преобразуването на SQL дата води до невалиден параметър на модела на числов формат.

  5. Цикъл върху стойности, създаване на динамична заявка и добавяне към набор от резултати