Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL: Tìm email không hợp lệ trong bảng

Để lọc các địa chỉ email không đúng định dạng, sử dụng toán tử NOT LIKE với pattern cơ bản.

Cú pháp

SELECT ten_cot_email 
FROM ten_bang 
WHERE ten_cot_email NOT LIKE '%_@_%._%';

Pattern %_@_%._% nghĩa là: có ít nhất 1 ký tự trước @, có @, có ít nhất 1 ký tự sau @ trước dấu chấm, có dấu chấm, và có ít nhất 1 ký tự sau dấu chấm.

Ví dụ minh họa

Tạo bảng:

mysql> CREATE TABLE TimEmailKhongHopLe (
    -> Id INT NOT NULL AUTO_INCREMENT,
    -> Ten VARCHAR(20),
    -> Email VARCHAR(40),
    -> PRIMARY KEY(Id)
    -> );

Chèn dữ liệu (kết hợp email hợp lệ và không hợp lệ):

mysql> INSERT INTO TimEmailKhongHopLe(Ten, Email) VALUES('John', 'John12@gmail.com');
mysql> INSERT INTO TimEmailKhongHopLe(Ten, Email) VALUES('Carol', 'Carol@hotmail.com');
mysql> INSERT INTO TimEmailKhongHopLe(Ten, Email) VALUES('Mike', '123Mike@gmailcom');     -- thiếu dấu chấm
mysql> INSERT INTO TimEmailKhongHopLe(Ten, Email) VALUES('Bob', 'Bob909hotmail.com');      -- thiếu @
mysql> INSERT INTO TimEmailKhongHopLe(Ten, Email) VALUES('David', 'David@gmail.com');

Truy vấn tìm email không hợp lệ:

mysql> SELECT Email FROM TimEmailKhongHopLe 
    -> WHERE Email NOT LIKE '%_@_%._%';

Kết quả:

+-------------------+
| Email             |
+-------------------+
| 123Mike@gmailcom  |
| Bob909hotmail.com |
+-------------------+

Lưu ý: Cách này chỉ kiểm tra định dạng cơ bản. Để kiểm tra chính xác hơn (RFC 5322), nên dùng REGEXP hoặc xử lý ở tầng ứng dụng.