鉴于表:
CREATE TABLE IF NOT EXISTS `users` ( `id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(100) NOT NULL,PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
添加几行:
INSERT INTO `users` (`id`,`name`) VALUES (NULL,'Bob'),(NULL,'Larry'),'Steve');
为什么,OH为什么!此查询是否返回结果:
SELECT * FROM `users` WHERE id = "2this-is-not a numeric value"
结果:
query returned 1 row(s) in 0.0003 sec id name ----------------- 2 Larry
where子句中使用的字符串显然被转换为数值 – 谁说这样做?!我找不到任何暗示MysqL或PHP会假定自动转换我的字符串文字的文档.
这仅在数字字符是字符串中的第一个字符时才有效,“此2不是数字”不会返回结果. “12 2”将变为12,“1 2”(单空格2)变为1.
任何解释此行为的文章或文档将不胜感激.