给定以下表格:
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'),(NULL , 'Steve');
为什么这个查询会返回结果:
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会自动转换我的字符串文字。
只有当数字字符是字符串中的第一个字符时,才能正常工作,"this 2 is not numeric"将不会返回结果。 "12 2"将变成12,"1 2"(一个空格两个)变成1。
如有任何解释此行为的文章或文档,将不胜感激。