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

Cách tìm kiếm không phân biệt chữ hoa/chữ thường (case-insensitive) với LIKE trong MySQL

MySQL mặc định không phân biệt hoa/thường cho các collation phổ biến (như utf8mb4_general_ci, utf8mb4_unicode_ci). Dùng LOWER() hoặc UPPER() để đảm bảo tìm kiếm case-insensitive rõ ràng.

Ví dụ

mysql> CREATE TABLE InCaseSensDemo (Name VARCHAR(100));
mysql> INSERT INTO InCaseSensDemo VALUES('JOhN'), ('bob'), ('BoB'), ('Bob');

mysql> SELECT * FROM InCaseSensDemo WHERE LOWER(Name) LIKE '%bob%';
+------+
| Name |
+------+
| bob  |
| BoB  |
| Bob  |
+------+

Tất cả 3 biến thể của "bob" được tìm thấy.

Cú pháp phổ biến

SELECT * FROM ten_bang WHERE LOWER(ten_cot) LIKE LOWER('%tu_khoa%');

Lưu ý: Nếu collation của cột/bảng kết thúc bằng _ci (case-insensitive), LIKE đã tự động không phân biệt hoa/thường. Việc dùng LOWER() chỉ để rõ ý图 hoặc khi collation là _cs (case-sensitive) hoặc _bin.