我有一个Mysql(5.1.58-1ubuntu1)'用户'表( InnoDB 存储引擎, utf8 general ci 整理),包含3个字段(为简单起见) :
在此表中只有两条记录(为简单起见):
id| username | password
-----------------------
1 | myuser | custom1
2 | myuser2 | custom2
所以,如果我运行此查询
select * from users where username = 0 and password = 0
mysql将返回所有记录。
相反,如果我运行下面的查询
select * from users where username = '0' and password = '0'
MySql给我一个空集。
对于我的观点,这种行为很奇怪,似乎是一个难题。
有人有任何解释吗?
答案 0 :(得分:5)
这不是一个错误。您只能比较相同类型的值,因此MySQL会以静默方式将文本“myuser”转换为值为0的整数。