12.3.1 排序规则命名约定
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
排序,并允许在 MySQL 5.1.24 之前创建的表升级(Bug #27877)。xxx
_general_ci