文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF(US Ltr) - 40.0Mb
PDF(A4) - 40.1Mb
手册页(TGZ) - 258.2Kb
手册页(Zip) - 365.3Kb
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 节,“二进制排序规则与 _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)。