sql >> Databasteknik >  >> RDS >> Oracle

validering på e-post/postnummerfält i sql/oracle

Här är regexp-syntaxen för en e-postadress, inklusive citattecken

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

Så du kan använda regexp_like() i en where-sats eller regexp_substr() för att kontrollera om ditt fält innehåller en giltig e-postadress. Här är ett exempel - du kommer att se att regexp_substr() returnerar NULL på adressen som saknar .domänen, vilket misslyckas med valideringen av delsträngen. Därifrån kan du bygga en kontrollbegränsning runt den, eller genomdriva den med en trigger(yuck), etc.

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

Med samma data, här är en fråga som endast begränsar giltiga e-postadresser, med 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ök på innehållssidan i SQL-referens för regexp för att se stödet för reguljära uttryck.



  1. Kontrollera hur gammal en Oracle-databas är?

  2. Få följare på ett posteffektivt sätt i laravel 5.1

  3. Felkod:23 Slut på resurser när filen öppnas

  4. Hur man redigerar MySQL my.cnf-filen