日期:2014-05-16  浏览次数:20943 次

mysql 字符集和校对

use case

首先看个例子:

有个user 表

User( username VARCHAR(5) CHARACTER SET utf8COLLATE utf8_general_ci);

有记录('username');和('UserNAme');

使用 select * from User where username='username';   将会选出两条数据


然后将username的COLLATE改为utf8_bin;

User( username VARCHAR(5) CHARACTER SET utf8 COLLATE utf8_bin);

再使用 select * from User where username='username';   将会选出第一条数据

这是为什么呢?请往下看:

字符集(CHARACTER SET)是一套符号和编码。校对规则(COLLATE)是在字符集内用于比较字符的一套规则。让我们使用一个假想字符集的例子来区别清楚。

假设我们有一个字母表使用了四个字母:‘A’、‘B’、‘a’、‘b’。我们为每个字母赋予一个数值:‘A