### 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 节,“与\_分类整理”](charset-binary-collations.html). - Unicode 字符集的排序规则名称可能包括一个版本号,以指示排序规则所基于的 Unicode 排序算法 (UCA) 的版本。名称中没有版本号的基于 UCA 的排序规则使用版本 4.0.0 UCA 权重键。例如: - `utf8mb4_0900_ai_ci`基于 UCA 9.0.0 权重键()。 - `utf8mb4_unicode_520_ci`基于 UCA 5.2.0 权重键()。 - `utf8mb4_unicode_ci`(未命名版本)基于 UCA 4.0.0 权重键()。 - 对于 Unicode 字符集,`*`xxx`*_general_mysql500_ci`排序规则保留原始的 5.1.24 之前的顺序`*`xxx`*_general_ci`在 MySQL 5.1.24 之前创建的表的排序规则和允许升级(错误 #27877)。