預設:大小寫不敏感 (ci 校對規則)
SELECT * FROM t WHERE col LIKE 'a%'; -- 匹配 'a', 'A', 'Abc'...
三種啟用大小寫敏感方法
- 查詢級:BINARY 關鍵字
SELECT * FROM t WHERE BINARY col LIKE 'a%';
強制字節級比較,'a' ≠ 'A'。
- 欄位級:建表指定 BINARY/校對規則
CREATE TABLE t (col VARCHAR(20) BINARY);
或 COLLATE utf8mb4_bin (或 utf8_bin),永久生效。
- 伺服器級:my.cnf 設定預設校對規則
[mysqld]
collation_server = utf8mb4_bin
影響新建表預設,舊表不變。
校對規則命名規則
_ci = Case Insensitive (不敏感)
_cs = Case Sensitive (敏感)
_bin = Binary (按字節碼比較,最嚴格)
效能提示
BINARY col 導致索引失效 (函數包裹),大表慎用。
- 欄位級
COLLATE ..._bin 可正常使用索引。
- 中文環境建議
utf8mb4_0900_as_cs (8.0) 或 utf8mb4_bin,兼顧大小寫與重音敏感。