Để 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.