MySQL WHERE条件类型不一致导致的数据问题

推荐书籍《可能性的艺术》

如果MySQL WHERE条件类型和要查询的字段数据类型一致,会对查询结果有什么影响呢?

创建一张表

DROP TABLE if EXISTS t_student;
CREATE TABLE t_student (
`id` BIGINT NOT NULL auto_increment COMMENT '主键', 
`name` VARCHAR(20) COMMENT '姓名', 
`number` VARCHAR(10) COMMENT '学号',
primary key(`id`)
) ENGINE=INNODB DEFAULT charset=utf8 COMMENT '学生表';

表里插入数据

INSERT INTO t_student VALUES (NULL, 'lilei', '1');
INSERT INTO t_student VALUES (NULL, 'hanmeimei', '2');
INSERT INTO t_student VALUES (NULL, 'jim', '2');

查询

SELECT * FROM t_student

一:查询数据(类型一致)

SELECT * FROM t_student WHERE number = '1';

WHERE条件字段数据类型和要查询字段的实际数据类型一致,结果是没有问题的。

二:查询数据(类型不一致)

SELECT * FROM t_student WHERE number = 1;

WHERE条件是Int类型,MySQL会把number列的数据(VARCHAR)转成Int类型,然后再和条件匹配,此时匹配到一条数据。

SELECT * FROM t_student WHERE number = 2;

同理:WHERE条件是Int类型,MySQL会把number列的数据转成Int类型,然后和条件匹配,此时匹配到一条数据。

SELECT * FROM t_student WHERE number = 0;

WHERE条件是Int类型,MySQL会把number列的数据转成Int类型,然后匹配。number列类型是字符串,非数字字符串转成Int类型,会转成0,此时匹配到一条数据。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容