对于以下查询从 mysql 获得的结果,我感到非常困惑。
SELECT id, email, full_name FROM user WHERE `email` = 0 AND `password` = 0
它给了我这个结果
这怎么可能?当我将这些零括在引号中时,它不会给出任何结果。原因是什么?
顺便说一句,返回的行存在于数据库中,但它的电子邮件或密码中肯定没有 0。
列类型为:email
是 VARCHAR(100)
密码是CHAR(32)
最佳答案
您的字段中确实有 e
、m
、a
等...?由于您正在比较字符串=整数
,mysql会将字符串转换为整数:
(int)'email' -> 0
当然
0 = 0 -> true
如果您的字段是(例如)9email
,则 (int)'9email' -> 9
和 0 = 9
将为 false 。 'email' = '0'
也是如此。这两个字符串不相等,因此该行永远不会匹配。
关于mysql - mysql对于简单的select查询返回错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25816026/