Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
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 排序规则后缀含义

    Suffix Meaning
    _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 排序,并允许在 MySQL 5.1.24 之前创建的表升级(Bug #27877)。