MySQL 預設搜尋**不區分大小寫**(除特定字符集如 czech)。本文說明如何用 COLLATE 強制大小寫敏感、資料表層級預設排序規則、簡單比較運算的排序值邏輯。
SELECT * FROM t WHERE col LIKE 'a%';
-- 會匹配 'apple', 'Apple', 'APPLE' 等
使用 COLLATE 指定區分大小寫(_cs)或二進位(_bin)排序規則:
-- 方式 1:欄位套用 COLLATE
SELECT * FROM t WHERE col COLLATE latin1_general_cs LIKE 'a%';
-- 方式 2:字串常數套用 COLLATE
SELECT * FROM t WHERE col LIKE 'a%' COLLATE latin1_general_cs;
-- 方式 3:二進位比較(最快、最嚴格)
SELECT * FROM t WHERE col COLLATE latin1_bin LIKE 'a%';
-- 建表時指定
CREATE TABLE t (
col VARCHAR(50) COLLATE latin1_general_cs -- 或 utf8mb4_bin
);
-- 修改既有欄位
ALTER TABLE t MODIFY col VARCHAR(50) COLLATE latin1_general_cs;
| 字符集 | 區分大小寫 (cs) | 二進位 |
|---|---|---|
| latin1 | latin1_general_cs | latin1_bin |
| utf8 | utf8_general_cs | utf8_bin |
| utf8mb4 | utf8mb4_0900_as_cs | utf8mb4_bin |