【发布时间】:2012-03-31 02:21:36
【问题描述】:
为什么select 'aaa' =0 返回 1 (TRUE)
如果我有一张这样的桌子
userid | pass
user1 | pas1
如果我查询:
select from table where userid = 0 and pass =0
它给了我所有的行?
【问题讨论】:
为什么select 'aaa' =0 返回 1 (TRUE)
如果我有一张这样的桌子
userid | pass
user1 | pas1
如果我查询:
select from table where userid = 0 and pass =0
它给了我所有的行?
【问题讨论】:
MySQL 看到 'aaa' = 0 并自己思考:
“我可以将 aaa 转换为整数,或者将 0 转换为字符串。”
猜猜它和哪一个搭配?
基本上发生的事情是 'aaa' 正在转换为整数,并且由于它不是有效的整数,所以它强制转换为 0。
0 = 0 当然是真(或真 == 1)。
我怀疑您的 userid 列也发生了同样的情况,但在不知道其值/数据类型的情况下,很难说。
【讨论】: