文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


12.3.1 排序规则命名约定

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

  • 排序规则名称以与其关联的字符集的名称开头,通常后跟一个或多个后缀,指示其他排序规则特性。例如,utf8mb4_0900_ai_cilatin1_swedish_ci 分别是 utf8mb4latin1 字符集的排序规则。 binary 字符集只有一个排序规则,也称为 binary,没有后缀。

  • 特定语言的排序规则包含区域设置代码或语言名称。例如,utf8mb4_tr_0900_ai_ciutf8mb4_hu_0900_ai_ci 使用土耳其语和匈牙利语的规则分别对 utf8mb4 字符集的字符进行排序。 utf8mb4_turkish_ciutf8mb4_hungarian_ci 类似,但基于较旧版本的 Unicode 排序算法。

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

    表 12.1 排序规则后缀含义

    后缀 含义
    _ai 不区分重音
    _as 区分重音
    _ci 不区分大小写
    _cs 区分大小写
    _ks 区分假名
    _bin 二进制

    对于未指定重音敏感性的非二进制排序规则名称,它由大小写敏感性确定。如果排序规则名称不包含 _ai_as,则名称中的 _ci 隐含 _ai,名称中的 _cs 隐含 _as。例如,latin1_general_ci 显式不区分大小写,隐式不区分重音,latin1_general_cs 显式区分大小写,隐式区分重音,utf8mb4_0900_ai_ci 显式不区分大小写且不区分重音。

    对于日语排序规则,_ks 后缀表示排序规则区分假名;也就是说,它区分片假名字符和平假名字符。没有 _ks 后缀的日语排序规则不区分假名,并且在排序时将片假名字符和平假名字符视为相等。

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

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

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