COLLATE 定義字符串比較、排序的規則集,影響 ORDER BY、GROUP BY、DISTINCT、WHERE col = 'val'、索引順序等所有字符串操作。
CREATE DATABASE db CHARSET utf8mb4 COLLATE utf8mb4_general_ci;CREATE TABLE t (c VARCHAR(20)) CHARSET utf8mb4 COLLATE utf8mb4_bin;CREATE TABLE t (c VARCHAR(20) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci);SELECT 'a' = 'A' COLLATE utf8mb4_bin; -- 0 (區分大小寫)格式:,如 utf8mb4_general_ci、utf8mb4_unicode_520_ci、utf8mb4_zh_0900_ai_ci。
| 後綴 | 全稱 | 含義 | 示例 |
|---|---|---|---|
_ci | Case Insensitive | 不區分大小寫 | 'a' = 'A' |
_cs | Case Sensitive | 區分大小寫 | 'a' != 'A' |
_ai | Accent Insensitive | 不區分重音/音調 | 'é' = 'e' |
_as | Accent Sensitive | 區分重音 | 'é' != 'e' |
_ks | Kana Sensitive | 區分平/片假名 | 日文專用 |
_ws | Width Sensitive | 區分全/半角 | 'a' != 'a' |
_bin | Binary | 二進制比較,最快,嚴格區分所有差異 | 按字節碼序 |
| 校對集 | 特點 | 適用場景 |
|---|---|---|
utf8mb4_general_ci | 簡化 Unicode,速度快,不支援輔助平面部分排序規則 | 通用業務、不需精準多語言排序 |
utf8mb4_unicode_ci | 標準 UCA(Unicode Collation Algorithm),支援多語言、重音、收尾字符 | 多語言應用、需正確排序 |
utf8mb4_0900_ai_ci | 8.0 默認,基於 UCA 9.0.0,支援表情符號、更精準 | 新項目推薦默認 |
utf8mb4_bin | 二進制,區分大小寫/重音/寬度,性能最好 | 精確匹配、密碼驗證、Case Sensitive 需求 |
gbk_chinese_ci | GBK 字符集默認,不區分大小寫 | 舊系統、純中文環境 |
utf8mb4_0900_ai_ci(8.0)或 utf8mb4_unicode_ci(5.7)。COLLATE utf8mb4_bin 或 _cs 後綴。utf8mb4_zh_0900_ai_ci(拼音)或 utf8mb4_zh_0900_as_cs(筆畫)。Illegal mix of collations)。SHOW COLLATION LIKE 'utf8mb4%';
SHOW COLLATION WHERE Charset = 'gbk';
COLLATE 決定「字符串如何比較與排序」。選型原則:統一字符集 utf8mb4,校對集按業務語言需求選 _ci/_ai/_bin,全庫全表保持一致,避免隱式轉換帶來的性能損耗與邏輯錯誤。