Oracle
 sql >> Baza danych >  >> RDS >> Oracle

walidacja pól e-mail / kod pocztowy w sql/oracle

Oto składnia wyrażenia regularnego dla adresu e-mail, w tym cytaty

'[a-zA-Z0-9._%-][email protected][a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}'

Możesz więc użyć regexp_like() w klauzuli where lub regexp_substr(), aby sprawdzić, czy twoje pole zawiera prawidłowy adres e-mail. Oto przykład — zobaczysz, że regexp_substr() zwraca NULL w adresie, w którym brakuje domeny .domain, co nie powiedzie się podczas sprawdzania poprawności podciągu. Stamtąd możesz zbudować wokół niego ograniczenie kontrolne lub wymusić je za pomocą wyzwalacza (fuj) itp.

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

Używając tych samych danych, oto zapytanie, które ogranicza tylko prawidłowe adresy e-mail, używając 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]

Przeszukaj zawartość strony SQL Reference dla wyrażenia regularnego, aby zobaczyć obsługę wyrażeń regularnych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak zwiększyć długość kolumny sqlplus?

  2. Jak wyrazić typ serializowalnego obiektu Blob w pliku mapowania hibernacji?

  3. Jak uciec ze znaków <,> i &do encji HTML w Oracle PL/SQL

  4. Instrukcja Oracle SQL w java

  5. sprawdź, czy jest to funkcja liczbowa w Oracle