Documentation Home

10.3.1 归类命名约定

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

  • 归类名称以与其关联的字符集的名称开头,通常后跟一个或多个表示其他归类特征的后缀。例如,utf8mb4_0900_ai_ci和 分别是和 字符集latin1_swedish_ci的排序规则 。字符集 有一个排序规则,也名为 ,没有后缀。 utf8mb4latin1binarybinary

  • 特定于语言的排序规则包括区域设置代码或语言名称。例如 ,分别使用土耳其语utf8mb4_tr_0900_ai_ci和 匈牙利语的规则为字符集 utf8mb4_hu_0900_ai_ci对字符进行排序。并且 相似,但基于较新版本的 Unicode 归类算法。 utf8mb4utf8mb4_turkish_ciutf8mb4_hungarian_ci

  • 排序规则后缀指示排序规则是区分大小写、区分重音还是区分假名(或它们的某种组合)或二进制。下表显示了用于指示这些特性的后缀。

    表 10.1 归类后缀含义

    后缀 意义
    _ai 口音不敏感
    _as 口音敏感
    _ci 不区分大小写
    _cs 区分大小写
    _ks 假名敏感
    _bin 二进制

    对于未指定区分重音的非二进制排序规则名称,由区分大小写决定。如果排序规则名称不包含_aior _as_ciin the name implys_ai_csin the name implies _as。例如, latin1_general_ci显式不区分大小写且隐式不区分重音, latin1_general_cs显式区分大小写且隐式区分重音,以及 utf8mb4_0900_ai_ci显式不区分大小写且不区分重音。

    对于日语归类,_ks后缀表示归类是假名敏感的;也就是说,它将片假名字符与平假名字符区分开来。没有后缀的日语排序规则对_ks 假名不敏感,并且将片假名和平假名字符视为相同的排序。

    对于字符集的binary排序规则 binary,比较是基于数字字节值。对于 _bin非二进制字符集的排序规则,比较基于数字字符代码值,这与多字节字符的字节值不同。有关字符集排序规则与非二进制字符集排序规则之间差异的信息 , binary请 参阅第 10.8.5 节,“二进制排序规则与 _bin 排序规则的比较”binary_bin

  • Unicode 字符集的归类名称可能包含版本号,以指示归类所基于的 Unicode 归类算法 (UCA) 的版本。名称中没有版本号的基于 UCA 的归类使用版本 4.0.0 UCA 权重键。例如:

  • 对于 Unicode 字符集, xxx_general_mysql500_ci 归类保留原始归类的 5.1.24 之前的顺序, xxx_general_ci 并允许升级在 MySQL 5.1.24 之前创建的表(错误#27877)。