2012-03-30 91 views
6

为什么select 'aaa' =0返回1(TRUE) 如果我有像MySQL的字符串转换回0

userid | pass 

user1 | pas1 

一个表,如果我查询:

select from table where userid = 0 and pass =0 

它给了我所有行?

回答

10

的MySQL看到 'AAA'= 0,认为本身:

“我可以AAA转换为整数,或者0到字符串。”

猜猜它与哪一个?

基本上发生的事情是,“AAA”被转换为整数,并且因为它不是一个有效的整数,它转换为0

0 = 0当然是真实的(或真实== 1) 。

我怀疑你的userid列也是如此,尽管不知道它的值/数据类型,但很难说。

http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html

+0

很好解释 – 2012-03-30 18:24:13

+0

打我吧:) – 2012-03-30 18:24:38