MySQL的bug?选择WHERE id ='1blah'

Cat*_*sis 1 mysql select

MySQL版本5.0.67

看一下这个非常简单的表,告诉我是否发现了MySQL错误,我试图寻找答案,但你可以想象得出正确的搜索条件有点困难

CREATE TABLE `product` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(60) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `product` VALUES (1, 'jim');
INSERT INTO `product` VALUES (2, 'bob');
Run Code Online (Sandbox Code Playgroud)

然后我可以选择以下内容

SELECT * FROM `product` WHERE `id` = '1';
Run Code Online (Sandbox Code Playgroud)

显然这会返回一行,但是,这样做也是如此

SELECT * FROM `product` WHERE `id` = '1blah';
Run Code Online (Sandbox Code Playgroud)

呃...为什么?当然这是错的,还是我生气了?在我使用MySQL提交错误报告之前,会对Web进行更多爬网.

Joh*_*ker 5

它会自动将字符串"1blah"转换为整数.当字符串以"1"开头时,结果整数只是1.

因此,它只是试图做正确的事情,即使它看起来有点反直觉.