charset-collation-names.md 3.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
### 10.3.1 排序规则命名约定

[](<>)

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

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

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

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

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

    -   `utf8mb4_0900_ai_ci`基于 UCA 9.0.0 权重键(<http://www.unicode.org/Public/UCA/9.0.0/allkeys.txt>)。

    -   `utf8mb4_unicode_520_ci`基于 UCA 5.2.0 权重键(<http://www.unicode.org/Public/UCA/5.2.0/allkeys.txt>)。

    -   `utf8mb4_unicode_ci`(未命名版本)基于 UCA 4.0.0 权重键(<http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt>)。

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