MySQL 校對名稱遵循以下慣例
校對名稱以其關聯的字元集名稱開頭,通常後接一個或多個尾碼,指示其他校對特性。例如,
utf8mb4_0900_ai_ci
和latin1_swedish_ci
分別是utf8mb4
和latin1
字元集的校對。binary
字元集有一個名為binary
的單一校對,沒有尾碼。特定於語言的校對包括地區設定代碼或語言名稱。例如,
utf8mb4_tr_0900_ai_ci
和utf8mb4_hu_0900_ai_ci
分別使用土耳其語和匈牙利語的規則,對utf8mb4
字元集的字元進行排序。utf8mb4_turkish_ci
和utf8mb4_hungarian_ci
類似,但基於較舊版本的 Unicode 校對演算法。校對尾碼指示校對是否區分大小寫、區分重音符號、區分假名 (或其組合) 或二進位。下表顯示用於指示這些特性的尾碼。
對於未指定重音符號敏感度的非二進位校對名稱,它由大小寫敏感度決定。如果校對名稱不包含
_ai
或_as
,則名稱中的_ci
暗示_ai
,而名稱中的_cs
暗示_as
。例如,latin1_general_ci
明確地不區分大小寫,並隱含地不區分重音符號,latin1_general_cs
明確地區分大小寫,並隱含地區分重音符號,而utf8mb4_0900_ai_ci
明確地不區分大小寫和重音符號。對於日語校對,
_ks
尾碼指示校對區分假名;也就是說,它區分片假名和假名。沒有_ks
尾碼的日語校對不區分假名,並將片假名和假名視為排序的相同字元。對於
binary
字元集的binary
校對,比較基於數字位元組值。對於非二進位字元集的_bin
校對,比較基於數字字元代碼值,這對於多位元組字元與位元組值不同。有關binary
字元集的binary
校對與非二進位字元集的_bin
校對之間差異的資訊,請參閱第 12.8.5 節, 「二進位校對與 _bin 校對的比較」。Unicode 字元集的校對名稱可能包含版本號,以指示校對所基於的 Unicode 校對演算法 (UCA) 版本。名稱中沒有版本號的基於 UCA 的校對使用版本 4.0.0 的 UCA 權重金鑰。例如
utf8mb4_0900_ai_ci
基於 UCA 9.0.0 權重金鑰 (http://www.unicode.org/Public/UCA/9.0.0/allkeys.txt)。utf8mb4_unicode_520_ci
基於 UCA 5.2.0 權重金鑰 (http://www.unicode.org/Public/UCA/5.2.0/allkeys.txt)。utf8mb4_unicode_ci
(沒有命名版本) 基於 UCA 4.0.0 權重金鑰 (http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt)。
對於 Unicode 字元集,
校對保留了原始xxx
_general_mysql500_ci
校對的 5.1.24 之前的排序,並允許為在 MySQL 5.1.24 之前建立的資料表進行升級 (錯誤 #27877)。xxx
_general_ci