sql >> Database >  >> RDS >> Oracle

validatie op e-mail / postcodevelden in sql/oracle

Hier is de regexp-syntaxis voor een e-mailadres, inclusief aanhalingstekens

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

U kunt dus regexp_like() gebruiken in een waar-clausule of regexp_substr() om te controleren of uw veld een geldig e-mailadres bevat. Hier is een voorbeeld:u zult zien dat de regexp_substr() NULL retourneert op het adres dat het .domain mist, waardoor de substring-validatie mislukt. Van daaruit kun je er een controlebeperking omheen bouwen, of het afdwingen met een trigger (bah), enz.

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

Met dezelfde gegevens is hier een zoekopdracht die alleen geldige e-mailadressen beperkt, met behulp van 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]

Zoek op de inhoudspagina van de SQL-referentie voor regexp om de ondersteuning voor reguliere expressies te zien.



  1. Java:Io-uitzondering:de netwerkadapter kon geen verbinding tot stand brengen

  2. Waarom en waar INDEX's gebruiken - voor- en nadelen

  3. Kan niet beslissen of normalisatie of de-normalisatie zou werken

  4. 2 tabellen samenvoegen voor een SELECT-query?