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 節,「binary 校對與 _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