美文网首页mysqlJava之家
MySQL WHERE条件类型不一致导致的数据问题

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

作者: 小小土豆dev | 来源:发表于2023-12-15 22:17 被阅读0次
    推荐书籍《可能性的艺术》

    如果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,此时匹配到一条数据。

    相关文章

      网友评论

        本文标题:MySQL WHERE条件类型不一致导致的数据问题

        本文链接:https://www.haomeiwen.com/subject/rulqgdtx.html