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