Mysql 使用 utf8 varchar 字段查找不正确

标签 mysql select unicode

我确实有一个带有表的 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/

相关文章:

windows - Win32 CreateProcess : When is CREATE_UNICODE_ENVIRONMENT *really* needed?

javascript - 选择框值作为 ID 而不是数据

codeigniter,获取mysql表列中的最大值

php - 尝试创建表时出现 "Incorrect table definition"

c# - MySQL 数据对于第 'XX' 行的 'XX' 列太长 - LongBlob 列

mysql - JSON_ARRAY_APPEND() 如果目标值为空则拒绝 Mysql

python - 用于 HTML 的非 unicode 和非 ascii 的 python 综合字符替换模块

python - Python 2.5.2 的 lower() 和 upper() 是否遵循 Unicode?

mysql - 这个mysql创建表查询有什么问题?

MySQL SELECT TMP 行 - 开始日期和结束日期之间的日期