Lọc email có tiền tố 5 chữ số dùng biểu thức chính quy REGEXP
Sử dụng REGEXP '^[0-9]{5}' để khớp chuỗi bắt đầu bằng đúng 5 chữ số (0-9). Dấu ^ = đầu chuỗi, [0-9] = chữ số, {5} = đúng 5 lần.
1. Tạo bảng và chèn email
mysql> CREATE TABLE DemoTable (UserEmailAddress VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES
('6574John@gmail.com'), ('Carol23456@gmail.com'),
('98989Chris_45678@gmail.com'), ('Mike12@gmail.com'),
('56453Adam@gmail.com');
2. Xem dữ liệu
mysql> SELECT * FROM DemoTable;
+----------------------------+ | UserEmailAddress | +----------------------------+ | 6574John@gmail.com | | Carol23456@gmail.com | | 98989Chris_45678@gmail.com | | Mike12@gmail.com | | 56453Adam@gmail.com | +----------------------------+
3. Truy vấn: Email bắt đầu bằng 5 chữ số
mysql> SELECT * FROM DemoTable
WHERE UserEmailAddress REGEXP '^[0-9]{5}';
4. Kết quả
+----------------------------+ | UserEmailAddress | +----------------------------+ | 98989Chris_45678@gmail.com | | 56453Adam@gmail.com | +----------------------------+
Phân tích:
- '6574John...' → 4 chữ số đầu → KHÔNG khớp
- 'Carol23456...' → bắt đầu bằng chữ → KHÔNG khớp
- '98989Chris...' → 5 chữ số '98989' → KHỚP
- 'Mike12...' → bắt đầu bằng chữ → KHÔNG khớp
- '56453Adam...' → 5 chữ số '56453' → KHỚP
Các biến thể REGEXP hữu ích cho email:
| Mẫu | Ý nghĩa |
|---|---|
'^[0-9]{5}' | Bắt đầu bằng 5 chữ số |
'^[0-9]{5,}' | Bắt đầu bằng ≥5 chữ số |
'^[0-9]{5}[^0-9]' | Bắt đầu 5 chữ số theo sau KHÔNG phải số |
'^[0-9]{5}@' | Bắt đầu 5 chữ số rồi ngay @ |
'^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$' | Validate email cơ bản |
Lưu ý: REGEXP không dùng index. Với bảng lớn, cân nhắc generated column + index hoặc full-text search.