10.1 常规字符集和排序规则

字符集是一组符号和编码。排序规则是一组用于比较字符集中的字符的规则。让我们用一个假想字符集的例子来使区别清楚。

假设我们有一个包含四个字母的字母:ABab。我们给每个字母一个数字:A = 0,B = 1,a = 2,b =3.字母A是一个符号,数字 0 是A的* encoding ,并且是所有四个字母和它们的组合编码是一个字符集*。

假设我们要比较两个字符串值AB。最简单的方法是查看编码:A为 0,B为 1.因为 0 小于 1,所以我们说A小于B。我们刚才所做的是将排序规则应用于字符集。排序规则是一组规则(在这种情况下,只有一个规则):“比较编码”。我们将所有可能的排序规则中最简单的一种称为二进制排序规则。

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

在现实生活中,大多数字符集都有许多字符:不仅是AB,而且还有整个字母,有时甚至是多个字母或带有数千个字符的东部书写系统,以及许多特殊符号和标点符号。同样在现实生活中,大多数排序规则都有许多规则,不仅用于是否区分字母大写,而且还用于是否区分重音符号(“重音符号”是附加在字符上的标记,如德语Ö),并且用于多字符 Map(例如,在两个德国归类之一中Ö = OE的规则)。

MySQL 可以为您做这些事情:

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

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

  • 在同一服务器,同一数据库甚至同一 table 中混合使用具有不同字符集或排序规则的字符串。

  • 在任何级别启用字符集和排序规则的规范。

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