輸入 aaa、aaA、AAA 皆回傳相同結果,預設 不區分大小寫。
_bin:二進位比較,**區分大小寫**_cs:Case Sensitive,**區分大小寫**_ci:Case Insensitive,**不區分大小寫**(預設)SELECT * FROM TableA WHERE BINARY columnA = 'aaa';
ALTER TABLE TableName MODIFY COLUMN ColumnName VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
SELECT * FROM some_table WHERE BINARY str = 'abc'; SELECT * FROM some_table WHERE BINARY str = 'ABC'; -- 結果不同
CREATE TABLE some_table (
str CHAR(20) BINARY
);
CHAR/VARCHAR/TEXT 加上 BINARY 屬性 → 採用該字元集的 二進位校對規則 → 排序與比較基於 **數值字元碼** → 自然區分大小寫。
| 場景 | 推薦方式 |
|---|---|
| 偶爾需要區分大小寫查詢 | 查詢加 BINARY() 或 BINARY 關鍵字 |
| 該欄位業務本質區分大小寫(如密碼、代碼) | 建表/修改欄位指定 COLLATE utf8_bin |
| 整個資料庫/表預設區分大小寫 | 建庫/建表指定 DEFAULT COLLATE utf8_bin |
MySQL 8.0+ 預設 utf8mb4_0900_ai_ci(不區分大小寫、重音不敏感),若需區分請顯式指定 _cs 或 _bin。