Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tìm kiếm chuỗi chính xác (phân biệt chữ hoa/thường) trong MySQL với COLLATE

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.