Vấn đề: MySQL mặc định không phân biệt chữ hoa/thường
Khi tìm 'MySQL', các giá trị 'mysql', 'MySql', 'MYSQL'... cũng khớp.
Tạo bảng và dữ liệu test
mysql> CREATE TABLE DemoTable1620 (
-> Subject VARCHAR(20)
-> );
Query OK, 0 rows affected (0.42 sec)
mysql> INSERT INTO DemoTable1620 VALUES('mysql');
mysql> INSERT INTO DemoTable1620 VALUES('MySql');
mysql> INSERT INTO DemoTable1620 VALUES('mYSQL');
mysql> INSERT INTO DemoTable1620 VALUES('MySQL');
mysql> INSERT INTO DemoTable1620 VALUES('MYSQL');
Dữ liệu
mysql> SELECT * FROM DemoTable1620;
+---------+
| Subject |
+---------+
| mysql |
| MySql |
| mYSQL |
| MySQL |
| MYSQL |
+---------+
Truy vấn chính xác với COLLATE utf8_bin
mysql> SELECT * FROM DemoTable1620
-> WHERE Subject COLLATE utf8_bin = 'MySQL';
Kết quả chỉ trả về 'MySQL'
+---------+
| Subject |
+---------+
| MySQL |
+---------+
Giải thích: utf8_bin so sánh theo mã byte (binary), phân biệt chữ hoa/thường. Từ MySQL 8.0, có thể dùng utf8mb4_0900_as_cs cho Unicode tốt hơn.