以下是代码示例
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
这个bug已经有记录了。问题是什么导致了这种行为,如何进行更正以避免将char符号转换为字符串?我可以像下面这样转换所有字段值:
mysql> SELECT id FROM tbl WHERE cast(`id`, BINARY) = '1h';
但我不太喜欢这种变体。
id
列的类型是什么?我猜它是数字类型?我真的没有看到任何错误。如果你强制 MySQL 在不同类型之间进行转换,你需要了解它是如何进行类型转换的。 - Dancrumb