Để tìm kiếm chuỗi chính xác phân biệt chữ hoa/thường (case-sensitive) trong MySQL, bạn dùng từ khóa BINARY trước tên cột trong mệnh đề WHERE ... LIKE.
Ví dụ minh họa
Tạo bảng:
mysql> create table DemoTable(
Name varchar(20)
);
Chèn dữ liệu (có 'John', 'JOHN', 'Adam', 'ADAM'):
mysql> insert into DemoTable values('Chris');
mysql> insert into DemoTable values('John');
mysql> insert into DemoTable values('Adam');
mysql> insert into DemoTable values('JOHN');
mysql> insert into DemoTable values('ADAM');
Hiển thị dữ liệu:
mysql> select * from DemoTable;
Kết quả:
+-------+ | Name | +-------+ | Chris | | John | | Adam | | JOHN | | ADAM | +-------+
Truy vấn tìm chính xác 'JOHN' (viết hoa)
mysql> select * from DemoTable where binary Name LIKE '%JOHN%';
Kết quả:
+------+ | Name | +------+ | JOHN | +------+
Giải thích:
BINARY: Ép so sánh nhị phân (binary comparison), phân biệt chữ hoa/thường- Không dùng BINARY:
WHERE Name LIKE '%JOHN%'sẽ khớp cả 'John', 'JOHN', 'john' (case-insensitive, mặc định collation) %JOHN%: Wildcard % khớp 0 hoặc nhiều ký tự trước/sau
Cách khác: Dùng COLLATE utf8mb4_bin hoặc COLLATE latin1_general_cs (case-sensitive collation) cho cột hoặc trong truy vấn: WHERE Name COLLATE utf8mb4_bin = 'JOHN'.