我在寻找系统中的错误时遇到了这种奇怪的行为。考虑跟随。
我们有一个具有 varchar(100) 列的 mysql 表。请参阅以下 sql 脚本。
create table user(`id` bigint(20) NOT NULL AUTO_INCREMENT,`user_id` varchar(100) NOT NULL,`username` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `user_id` (`user_id`)) ENGINE=InnoDB AUTO_INCREMENT=129 DEFAULT CHARSET=latin1;
insert into user(user_id, username) values('20120723145614834', 'user1');
insert into user(user_id, username) values('20120723151128642', 'user1');
当我执行以下查询时,我收到 0 个结果。
select * from user where user_id=20120723145614834;
但是当我执行以下操作时,我得到了结果(注意单引号)。
select * from user where user_id='20120723145614834';
这是预期的,因为 user_id 字段是 varchar。奇怪的是,以下两个查询都会产生结果。
select * from user where user_id=20120723151128642;
select * from user where user_id='20120723151128642';
谁能解释我这种奇怪行为的原因。我的MySql版本是5.1.63-0ubuntu0.11.10.1