这是代码
mysql> SELECT id FROM tbl WHERE id = '1h';
+----+
| id |
+----+
| 1 |
+----+
1 row in set
确实有一个 id 为 1 的字段(但不是 '1h')。
这是 MySQL 文档的摘录:http: //dev.mysql.com/doc/refman/5.1/en/type-conversion.html
mysql> SELECT 1 > '6x';
-> 0
mysql> SELECT 7 > '6x';
-> 1
所以这个错误被记录在案,可以这么说。问题是这种行为的原因是什么以及如何纠正它以使其不使用 char 符号转换字符串?我可以转换所有字段值,例如
mysql> SELECT id FROM tbl WHERE cast(`id`, BINARY) = '1h';
但我不太喜欢这个变种