sql >> Database teknologi >  >> RDS >> Oracle

validering på e-mail / postnummer felter i sql/oracle

Her er regexp-syntaksen for en e-mailadresse, inklusive anførselstegn

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

Så du kan bruge regexp_like() i en where-klausul eller regexp_substr() for at kontrollere, om dit felt indeholder en gyldig e-mailadresse. Her er et eksempel - du vil se, at regexp_substr() returnerer NULL på adressen, der mangler .domænet, hvilket mislykkes i valideringen af ​​understrengen. Derfra kan du opbygge en check-begrænsning omkring det eller håndhæve det ved hjælp af en trigger(yuck) osv.

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

Ved at bruge de samme data, er her en forespørgsel, der kun begrænser gyldige e-mailadresser ved hjælp af 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]

Søg på indholdssiden i SQL-reference for regexp for at se det regulære udtryksunderstøttelse.



  1. Sådan bruges GROUP BY og ORDER BY sammen i LARAVEL 5.6

  2. Vælg de sidste 20 ordre ved at gå opad - PHP/MySQL

  3. Sådan benchmarker du MySQL's ydeevne ved hjælp af SysBench

  4. Laravel-migreringstabel eksisterer allerede, men jeg vil tilføje en ny, ikke den ældre