Mặc định LIKE trong MySQL không phân biệt chữ hoa/thường (case-insensitive) với collation mặc định. Dùng LIKE BINARY để ép case-sensitive.
Cú pháp
SELECT column_name LIKE BINARY 'search_string' FROM table_name;
Ví dụ minh họa
mysql> CREATE TABLE LikeBinaryDemo (Name VARCHAR(200));
Query OK, 0 rows affected (0.58 sec)
mysql> INSERT INTO LikeBinaryDemo VALUES ('john');
Query OK, 1 row affected
Trường hợp 1: Có BINARY (case-sensitive)
mysql> SELECT Name LIKE BINARY 'JOHN' FROM LikeBinaryDemo; +-------------------------+ | Name LIKE BINARY 'JOHN' | +-------------------------+ | 0 | +-------------------------+
Trả về 0 (FALSE) vì 'john' ≠ 'JOHN'.
Trường hợp 2: Không BINARY (case-insensitive mặc định)
mysql> SELECT Name LIKE 'JOHN' FROM LikeBinaryDemo; +------------------+ | Name LIKE 'JOHN' | +------------------+ | 1 | +------------------+
Trả về 1 (TRUE) vì mặc định không phân biệt hoa/thường.
Các cách khác ép case-sensitive
| Phương pháp | Cú pháp | Ghi chú |
|---|---|---|
| LIKE BINARY | col LIKE BINARY 'ABC' |
Ngắn gọn, rõ ràng |
| COLLATE | col COLLATE utf8mb4_bin LIKE 'ABC' |
Chỉ định collation binary |
| CAST | CAST(col AS BINARY) LIKE 'ABC' |
Ép kiểu sang binary string |
| BINARY() | BINARY col LIKE 'ABC' |
Tương tự CAST |
Lưu ý
LIKE BINARYcũng ảnh hưởng đến ký tự đại diện%và_.- Collation của cột/bảng quyết định hành vi mặc định.
utf8mb4_general_ci= case-insensitive,utf8mb4_bin= case-sensitive.