Vấn đề: Tìm hàng có cột chứa một trong nhiều từ khóa
Cần lọc cột Subject chứa 'SQL' HOẶC 'Python'.
Giải pháp: RLIKE (synonym của REGEXP) với toán tử | (OR)
Cú pháp: WHERE column RLIKE 'keyword1|keyword2|...'.
1. Tạo bảng và dữ liệu
CREATE TABLE DemoTable (Subject VARCHAR(20));
INSERT INTO DemoTable VALUES
('MySQL'), ('Python'), ('MongoDB'), ('SQL Server'), ('PL SQL');
2. Truy vấn lọc 'SQL' hoặc 'Python'
SELECT * FROM DemoTable
WHERE Subject RLIKE 'SQL|Python';
3. Kết quả
+------------+
| Subject |
+------------+
| MySQL |
| Python |
| SQL Server |
| PL SQL |
+------------+
Giải thích
RLIKE=REGEXP– Khớp biểu thức chính quy.'SQL|Python'– Nghĩa là: khớp 'SQL' HOẶC 'Python' ở bất kỳ vị trí nào trong chuỗi.- Khớp một phần: 'MySQL' chứa 'SQL', 'PL SQL' chứa 'SQL'.
Khớp chính xác từ (whole word)
WHERE Subject RLIKE '[[:<:]]SQL[[:>:]]|[[:<:]]Python[[:>:]]'
[[:<:]],[[:>:]]– Ranh giới từ (word boundary) trong MySQL regex.- Chỉ khớp 'SQL' đứngalone, không khớp 'MySQL', 'PostgreSQL'.
Lưu ý hiệu suất
RLIKE/REGEXPkhông dùng chỉ mục thông thường → full table scan.- Với bảng lớn, cân nhắc
FULLTEXT INDEX+MATCH() AGAINST(). - Hoặc chuẩn hóa: tách từ khóa vào bảng riêng (many-to-many).