字符集是一组符号和编码 。排序规则是一 组用于比较字符集中字符的规则。让我们用一个假想字符集的例子来明确区分。
假设我们有一个包含四个字母的字母表:
A
, B
, a
,
b
。我们给每个字母一个数字:
A
=0,B
=1,
a
=2,b
=3。字母
A
是一个符号,数字0是对的
编码,A
所有四个字母及其编码的组合就是一个
字符集。
假设我们要比较两个字符串值,
A
并且B
. 最简单的方法是查看编码:0A
和 1 B
。因为 0 小于 1,所以我们说
A
小于B
。我们刚刚所做的是对我们的字符集应用排序规则。排序规则是一组规则(在这种情况下只有一个规则):“比较编码。”我们将这种最简单的排序规则称为二进制
排序规则。
但是如果我们想说小写字母和大写字母是等价的呢?那么我们至少有两条规则:(1)将小写字母a
and
b
视为等同于A
and
B
;(2) 然后比较编码。我们称之为不区分大小写的
排序规则。它比二进制排序规则稍微复杂一点。
在现实生活中,大多数字符集都有很多字符:不仅是
整个字母表A
,B
有时还有多个字母表或具有数千个字符的东方书写系统,以及许多特殊符号和标点符号。同样在现实生活中,大多数排序规则都有很多规则,不仅是区分字母大小写,还有是否区分重音(“重音”是德语中附加在字符上的标记Ö
),以及多字符映射(例如
两个德语排序规则之一中的
Ö
=规则)。OE
MySQL 可以为你做这些事情:
使用各种字符集存储字符串。
使用各种排序规则比较字符串。
在同一个服务器、同一个数据库甚至同一个表中混合使用不同字符集或排序规则的字符串。
在任何级别启用字符集和排序规则规范。
要有效地使用这些功能,您必须了解可用的字符集和排序规则、如何更改默认值以及它们如何影响字符串运算符和函数的行为。