# 10.3.1 排序规则命名约定
MySQL 排序规则名称遵循以下约定:
排序规则名称以与其关联的字符集的名称开头,通常后跟一个或多个表示其他排序规则特征的后缀。例如,
utf8mb4_0900_ai_ci
和latin1_swedish_ci
是排序规则utf8mb4
和拉丁语1
字符集,分别。这二进制
字符集有一个排序规则,也称为二进制
, 没有后缀。特定于语言的排序规则包括语言环境代码或语言名称。例如,
utf8mb4_tr_0900_ai_ci
和utf8mb4_hu_0900_ai_ci
对字符进行排序utf8mb4
字符集分别使用土耳其语和匈牙利语的规则。utf8mb4_turkish_ci
和utf8mb4_hungarian_ci
相似,但基于较新版本的 Unicode 排序算法。排序规则后缀指示排序规则是区分大小写、区分重音、区分假名(或它们的某种组合)还是二进制。下表显示了用于指示这些特征的后缀。
表 10.1 排序规则后缀含义
后缀 意义 _ai
口音不敏感 _作为
重音敏感 _ci
不区分大小写 _cs
区分大小写 _ks
假名敏感 _bin
二进制 对于未指定区分重音的非二进制排序规则名称,它由区分大小写决定。如果排序规则名称不包含
_ai
要么_作为
,_ci
顾名思义_ai
和_cs
顾名思义_作为
.例如,latin1_general_ci
显式不区分大小写和隐式不区分重音,latin1_general_cs
显式区分大小写和隐式区分重音,并且utf8mb4_0900_ai_ci
是明确不区分大小写和重音的。对于日本排序规则,
_ks
后缀表示排序规则是假名敏感的;也就是说,它将片假名字符与平假名字符区分开来。日本校对没有_ks
suffix 对假名不敏感,并且在排序时将片假名和平假名视为相同。为了
二进制
整理的二进制
字符集,比较基于数字字节值。为了_bin
非二进制字符集的排序规则,比较基于数字字符代码值,这与多字节字符的字节值不同。有关两者之间差异的信息二进制
整理的二进制
字符集和_bin
非二进制字符集的排序规则,请参见第 10.8.5 节,“与_分类整理”.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 (opens new window))。utf8mb4_unicode_520_ci
基于 UCA 5.2.0 权重键(http://www.unicode.org/Public/UCA/5.2.0/allkeys.txt (opens new window))。utf8mb4_unicode_ci
(未命名版本)基于 UCA 4.0.0 权重键(http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt (opens new window))。
对于 Unicode 字符集,
*
xxx*_general_mysql500_ci
排序规则保留原始的 5.1.24 之前的顺序*
xxx*_general_ci
在 MySQL 5.1.24 之前创建的表的排序规则和允许升级(错误 #27877)。