Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

validasi pada bidang email/kode pos di sql/Oracle

Berikut sintaks regexp untuk alamat email, termasuk tanda kutip

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

Jadi, Anda dapat menggunakan regexp_like() dalam klausa where atau regexp_substr() untuk memeriksa apakah bidang Anda berisi alamat email yang valid. Berikut adalah contoh-Anda akan melihat bahwa regexp_substr() mengembalikan NULL pada alamat yang tidak memiliki .domain, yang gagal dalam validasi substring. Dari sana Anda dapat membuat batasan pemeriksaan di sekitarnya, atau menerapkannya menggunakan pemicu(yuck), dll.

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

Menggunakan data yang sama, berikut adalah kueri yang hanya membatasi alamat email yang valid, menggunakan 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]

Telusuri halaman konten Referensi SQL untuk regexp untuk melihat dukungan ekspresi reguler.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah saya menggunakan fungsi analitik Oracle di sini?

  2. prototipe ioctl di solaris libc

  3. Cara Mendapatkan Kencan Kemarin di Oracle

  4. Bagaimana Anda bisa menjalankan kueri yang sama beberapa kali menggunakan loop di PL/SQL?

  5. Bagaimana saya bisa mengambil n baris yang tidak terkunci berikutnya dari Oracle?