MySQL 預設不區分大小寫進行搜尋(部分字符集如 czech 除外)。例如 col_name LIKE 'a%' 會同時匹配以 'A' 或 'a' 開頭的值。
確保比較雙方至少一方具備大小寫敏感(_cs)或二進制(_bin)排序規則。對於 latin1 字符集,可用 COLLATE 操作符:
SELECT * FROM t WHERE col COLLATE latin1_general_cs = 'Abc';
SELECT * FROM t WHERE col COLLATE latin1_bin = 'Abc';
建表或修改表時直接指定排序規則:
CREATE TABLE t (
col VARCHAR(50) CHARACTER SET latin1 COLLATE latin1_general_cs
);
-- 或
ALTER TABLE t MODIFY col VARCHAR(50) CHARACTER SET latin1 COLLATE latin1_bin;
簡單比較(>=, >, =, <, <=)、ORDER BY、GROUP BY 皆依據字符的「排序值」。若多字符排序值相同(如 'E'、'e'、'É'),MySQL 視為相等。
| 排序規則後綴 | 含義 |
|---|---|
_ci | Case Insensitive(不區分大小寫) |
_cs | Case Sensitive(區分大小寫) |
_bin | Binary(按二進制碼值比較,最嚴格) |
COLLATE xxx_cs 或 COLLATE xxx_bin。COLLATE。SHOW COLLATION 查看。