# 10.3.1 排序规则命名约定

MySQL 排序规则名称遵循以下约定:

  • 排序规则名称以与其关联的字符集的名称开头,通常后跟一个或多个表示其他排序规则特征的后缀。例如,utf8mb4_0900_ai_cilatin1_swedish_ci是排序规则utf8mb4拉丁语1字符集,分别。这二进制字符集有一个排序规则,也称为二进制, 没有后缀。

  • 特定于语言的排序规则包括语言环境代码或语言名称。例如,utf8mb4_tr_0900_ai_ciutf8mb4_hu_0900_ai_ci对字符进行排序utf8mb4字符集分别使用土耳其语和匈牙利语的规则。utf8mb4_turkish_ciutf8mb4_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后缀表示排序规则是假名敏感的;也就是说,它将片假名字符与平假名字符区分开来。日本校对没有_kssuffix 对假名不敏感,并且在排序时将片假名和平假名视为相同。

    为了二进制整理的二进制字符集,比较基于数字字节值。为了_bin非二进制字符集的排序规则,比较基于数字字符代码值,这与多字节字符的字节值不同。有关两者之间差异的信息二进制整理的二进制字符集和_bin非二进制字符集的排序规则,请参见第 10.8.5 节,“与_分类整理”.

  • Unicode 字符集的排序规则名称可能包括一个版本号,以指示排序规则所基于的 Unicode 排序算法 (UCA) 的版本。名称中没有版本号的基于 UCA 的排序规则使用版本 4.0.0 UCA 权重键。例如:

  • 对于 Unicode 字符集,*xxx*_general_mysql500_ci排序规则保留原始的 5.1.24 之前的顺序*xxx*_general_ci在 MySQL 5.1.24 之前创建的表的排序规则和允许升级(错误 #27877)。