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


MySQL 8.4 Reference Manual  /  Character Sets, Collations, Unicode  /  Character Sets and Collations in General

12.1 字符集和排序规则概述

一个字符集是一个符号和编码的集合。一个排序规则是对字符集中的字符比较的规则。让我们用一个虚构的字符集来做个示例。

假设我们有一个四个字母的字母表:ABab。我们给每个字母分配一个数字:A = 0,B = 1,a = 2,b = 3。字母A是一个符号,数字0是A的编码,而四个字母和它们的编码组成一个字符集

假设我们想比较两个字符串值:AB。最简单的方法是查看编码:0 对于 A,1 对于 B。因为 0 小于 1,我们说 A 小于 B。我们刚刚做的就是对字符集应用一个排序规则。这个排序规则是一个规则(在这里只有一个):比较编码。”我们称这个最简单的所有可能排序规则为二进制 排序规则。

但是,如果我们想说小写字母和大写字母是等价的?那么我们至少需要两个规则:(1)将小写字母ab视为AB;(2)然后比较编码。我们称这个是不区分大小写排序。这比二进制排序复杂了一点。

在实际生活中,多数字符集都有很多字符:不仅仅是AB,还有整个字母表,有时候多个字母表或东亚写法系统,伴随着许多特殊符号和标点符号。实际生活中,多数排序规则不仅是区分字母大小,还要区分音调(例如德国Ö),还有多字符映射规则(例如某个德国排序规则将Ö视为OE)。

MySQL 可以帮你做这些事情:

  • 使用多种字符集存储字符串。

  • 使用多种排序规则比较字符串。

  • 在同一个服务器、同一个数据库或同一个表中混杂不同字符集或排序规则的字符串。

  • 在任何级别指定字符集和排序规则。

要想有效地使用这些功能,你必须知道可用的字符集和排序规则,如何更改默认值,以及它们对字符串操作符和函数行为的影响。