MySQL排序规则名称遵循以下约定:
排序规则名称以与其相关联的字符集的名称开头,通常后跟一个或多个表示其他排序规则特征的后缀。例如,
utf8mb4_0900_ai_ci
而且latin1_swedish_ci
校勘是为了utf8mb4
而且latin1
分别字符集。的二进制
字符集有单一的排序规则,也称为二进制
,没有后缀。特定于语言的排序规则包括地区代码或语言名。例如,
utf8mb4_tr_0900_ai_ci
而且utf8mb4_hu_0900_ai_ci
的字符排序utf8mb4
分别使用土耳其语和匈牙利语规则的字符集。utf8mb4_turkish_ci
而且utf8mb4_hungarian_ci
是相似的,但基于较新的Unicode排序算法版本。排序规则后缀指示排序规则是区分大小写、区分重音、区分卡纳(或它们的某些组合)还是二进制。下表显示了用于表示这些特征的后缀。
表10.1排序规则后缀含义
后缀 意义 _ai
Accent-insensitive _as
区分腔调字 _ci
不区分大小写 _cs
区分大小写的 _ks
Kana-sensitive _bin
二进制 对于没有指定重音敏感度的非二进制排序规则名称,则由大小写敏感度决定。如果排序规则名称中不包含
_ai
或_as
,_ci
顾名思义_ai
而且_cs
顾名思义_as
.例如,latin1_general_ci
显式不区分大小写隐式不区分重音,latin1_general_cs
显式区分大小写和隐式区分重音,以及utf8mb4_0900_ai_ci
显式地不区分大小写和重音。对于日文整理,
_ks
Suffix表示排序规则是卡纳敏感的;也就是说,它区分片假名字符和平假名字符。没有的日文整理_ks
后缀对假名不敏感,在排序时将片假名和平假名字符同等对待。为
二进制
排序的二进制
字符集,比较基于数值字节值。为_bin
非二进制字符集的排序,比较基于数值字符代码值,它不同于多字节字符的字节值。的差异的信息二进制
排序的二进制
字符集和_bin
非二进制字符集的排序,请参见第10.8.5节“binary Collation compare to _bin Collations”.Unicode字符集的排序规则名称可能包含版本号,以指示排序规则所基于的Unicode排序规则算法(UCA)的版本。名称中没有版本号的基于UCA的排序使用version-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字符集,
排序规则保留了原版本5.1.24之前的顺序xxx
_general_mysql500_ci
collations和允许升级MySQL 5.1.24之前创建的表(Bug #27877)。xxx
_general_ci