我确实有一个带有表的 UTF8 InnoDB 数据库,请说“单词”:
> 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 |
+------+---------+
提前致谢!
最佳答案
这是因为排序规则 - 它定义了如何比较字符以及哪些字符被视为相等。这可能是期望的结果,也可能不是——在最后一种情况下,使用二进制排序规则,只有严格相等的字符串才会被认为是相等的。但请记住,二进制排序规则也区分大小写
关于Mysql 使用 utf8 varchar 字段查找不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10522653/