mysql - mysql对于简单的select查询返回错误的结果

标签 mysql sql

对于以下查询从 mysql 获得的结果,我感到非常困惑。

SELECT id, email, full_name FROM user WHERE `email` = 0 AND `password` = 0

它给了我这个结果

enter image description here

这怎么可能?当我将这些零括在引号中时,它不会给出任何结果。原因是什么?

顺便说一句,返回的行存在于数据库中,但它的电子邮件或密码中肯定没有 0。

列类型为:emailVARCHAR(100)密码是CHAR(32)

最佳答案

您的字段中确实有 ema 等...?由于您正在比较字符串=整数,mysql会将字符串转换为整数:

(int)'email' -> 0

当然

0 = 0 -> true

如果您的字段是(例如)9email,则 (int)'9email' -> 90 = 9 将为 false 。 'email' = '0' 也是如此。这两个字符串不相等,因此该行永远不会匹配。

关于mysql - mysql对于简单的select查询返回错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25816026/

相关文章:

mysql - SQL 查询 - 关系表的双重条件

Javascript:如果定义了 php 变量,则执行一件事的函数

python - 调用objects.update_or_create后,Django模型得到 "ValueError: invalid literal for int() with base 10: "

php - 我可以在准备好的语句中参数化表名吗?

mysql - SQL 将文本更改为唯一 ID 号

mysql - 按组中联接表的最大值排序

mysql - 通过 sshfs 连接到远程套接字

php - 我的截止日期是 5 天,我需要为每个非工作日(周末或节假日)添加 +1 天

php - 如何在MySQL过程中返回最后插入的id

mysql - 将 Microsoft SQL (.MDF) 文件中的数据导入 MySQL