使用utf8 varchar字段进行Mysql错误查找

时间:2012-05-09 19:14:20

标签: mysql select unicode

我有一个带表的UTF8 InnoDB数据库,比如'words':

> desc words;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(50) | NO   | UNI | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

当我执行查询时

select * from word where name = 'Télécom';

我得到了一个我无法解释的奇怪结果:

+------+---------+
| id   | name    |
+------+---------+
| 4980 | telecom |
+------+---------+

提前致谢!

1 个答案:

答案 0 :(得分:2)

这是因为整理 - 它定义了如何比较角色以及哪些角色被认为是相同的。它可能是期望的结果,并且它可能不是 - 在最后一种情况下,使用二进制整理,并且只有严格相等的字符串才被认为是相等的。但请记住,二进制排序规则也区分大小写