Toán tử LIKE và ký tự đại diện % trong MySQL
Ký tự % khớp với 0 hoặc nhiều ký tự bất kỳ. Ký tự _ khớp với đúng 1 ký tự.
Cú pháp
SELECT * FROM tenBang WHERE cot LIKE 'mau%';
Ví dụ minh họa
Bảng SearchDemo:
CREATE TABLE SearchDemo (Name VARCHAR(100), LoginId VARCHAR(100));
INSERT INTO SearchDemo VALUES
('John','1_1'), ('Johnson','1_2'), ('Carol','2_1'),
('Bob','11_1'), ('Sam','11_2'), ('Mike','21_1');
Tìm LoginId bắt đầu bằng '2':
SELECT * FROM SearchDemo WHERE LoginId LIKE '2%';
Kết quả
+-------+---------+
| Name | LoginId |
+-------+---------+
| Carol | 2_1 |
| Mike | 21_1 |
+-------+---------+
Các mẫu phổ biến
| Mẫu | Ý nghĩa | Ví dụ khớp |
|---|---|---|
'abc%' | Bắt đầu bằng abc | abc, abc123, abc_def |
'%abc' | Kết thúc bằng abc | abc, 123abc, x_abc |
'%abc%' | Chứa abc ở bất kỳ đâu | abc, xabcy, 1abc2 |
'a_c' | 3 ký tự, giữa là bất kỳ | abc, a1c, a-c |
'a__c' | 4 ký tự, 2 ký tự giữa | abcd, a12c |
Hiệu năng & Index
LIKE 'abc%'(prefix) có thể dùng index.LIKE '%abc'hoặcLIKE '%abc%'không dùng index (full table scan).- Cần tìm kiếm chứa chuỗi trung gian → dùng Full-Text Search (FULLTEXT INDEX + MATCH...AGAINST).
Escape ký tự đặc biệt
Muốn tìm ký tự % hoặc _ thực sự:
WHERE cot LIKE '%\%%' ESCAPE '\' -- tìm chuỗi chứa %
WHERE cot LIKE '%\_%' ESCAPE '\' -- tìm chuỗi chứa _