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

Buộc LIKE phân biệt chữ hoa/chữ thường (case-sensitive) trong MySQL


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 BINARY cũ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.