MYSQL非常奇怪的选择行为

时间:2011-12-10 11:57:03

标签: mysql select behavior

我有一个Mysql(5.1.58-1ubuntu1)'用户'表( InnoDB 存储引擎, utf8 general ci 整理),包含3个字段(为简单起见) :

  • id :int(主键)
  • 用户名:varchar(255) - utf8_general_ci
  • 密码:varchar(255) - utf8_general_ci

在此表中只有两条记录(为简单起见):

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给我一个空集。

对于我的观点,这种行为很奇怪,似乎是一个难题。

有人有任何解释吗?

1 个答案:

答案 0 :(得分:5)

这不是一个错误。您只能比较相同类型的值,因此MySQL会以静默方式将文本“myuser”转换为值为0的整数。