Đây là cú pháp regexp cho một địa chỉ email, bao gồm cả dấu ngoặc kép
'[a-zA-Z0-9._%-][email protected][a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}'
Vì vậy, bạn có thể sử dụng regexp_like () trong mệnh đề where hoặc regexp_substr () để kiểm tra xem trường của bạn có chứa địa chỉ email hợp lệ hay không. Đây là một ví dụ - bạn sẽ thấy rằng regexp_substr () trả về NULL trên địa chỉ thiếu miền .domain, điều này không thể xác thực chuỗi con. Từ đó, bạn có thể xây dựng ràng buộc kiểm tra xung quanh nó hoặc thực thi nó bằng cách sử dụng trình kích hoạt (yuck), v.v.
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
Sử dụng cùng một dữ liệu, đây là một truy vấn chỉ giới hạn các địa chỉ email hợp lệ, sử dụng 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]
Tìm kiếm trang nội dung của Tham chiếu SQL cho regexp để xem hỗ trợ biểu thức chính quy.