Giới thiệu
Toán tử LIKE kết hợp ký tự đại diện % cho phép xây dựng chức năng tìm kiếm đơn giản: tìm các bản ghi chứa từ khóa ở bất kỳ vị trí nào trong cột văn bản.
Ví dụ thực hành
1. Tạo bảng DemoTable812
mysql> CREATE TABLE DemoTable812 (Comments TEXT);
2. Chèn bình luận mẫu
mysql> INSERT INTO DemoTable812 VALUES
('Good Looking'),('Awesome'),('Looking Gorgeous'),('Good Luck'),('Have a nice day');
3. Tìm bình luận chứa từ 'Look'
mysql> SELECT * FROM DemoTable812 WHERE Comments LIKE '%Look%';
4. Kết quả
+------------------+
| Comments |
+------------------+
| Good Looking |
| Looking Gorgeous |
+------------------+
Mở rộng: Tìm kiếm đa từ khóa
-- Tìm chứa 'Good' HOẶC 'Awesome'
SELECT * FROM DemoTable812 WHERE Comments LIKE '%Good%' OR Comments LIKE '%Awesome%';
-- Tìm chứa CẢ 'Good' VÀ 'Luck'
SELECT * FROM DemoTable812 WHERE Comments LIKE '%Good%' AND Comments LIKE '%Luck%';
Hiệu suất & Thay thế chuyên nghiệp
LIKE '%keyword%'không dùng được index → quét toàn bảng (full table scan). Chậm trên dữ liệu lớn.- Full-Text Search (MyISAM, InnoDB 5.6+):
ALTER TABLE t ADD FULLTEXT(col); SELECT * FROM t WHERE MATCH(col) AGAINST('keyword');— nhanh, hỗ trợ xếp hạng độ liên quan. - Elasticsearch / Meilisearch: Giải pháp tìm kiếm chuyên nghiệp cho ứng dụng quy mô lớn.
- Generated Column + Index: Tạo cột tách từ (tokenize) và index nếu chỉ cần tìm kiếm tiền tố.
Mẹo nhỏ
- Chuẩn hóa từ khóa: loại bỏ ký tự đặc biệt, chuyển về chữ thường.
- Escape ký tự đặc biệt của LIKE:
\_,\%,\\nếu tìm kiếm chuỗi chứa chúng.