前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL WHERE条件类型不一致导致的数据问题

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

原创
作者头像
小小土豆dev
发布2024-01-19 16:54:40
2230
发布2024-01-19 16:54:40
举报
文章被收录于专栏:Java之家
推荐书籍《可能性的艺术》
推荐书籍《可能性的艺术》

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

创建一张表

代码语言:sql
复制
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 '学生表';

表里插入数据

代码语言:sql
复制
INSERT INTO t_student VALUES (NULL, 'lilei', '1');
INSERT INTO t_student VALUES (NULL, 'hanmeimei', '2');
INSERT INTO t_student VALUES (NULL, 'jim', '2');

查询

代码语言:sql
复制
SELECT * FROM t_student
一:查询数据(类型一致)
代码语言:sql
复制
SELECT * FROM t_student WHERE number = '1';

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

二:查询数据(类型不一致)
代码语言:sql
复制
SELECT * FROM t_student WHERE number = 1;

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

代码语言:sql
复制
SELECT * FROM t_student WHERE number = 2;

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

代码语言:java
复制
SELECT * FROM t_student WHERE number = 0;

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一:查询数据(类型一致)
  • 二:查询数据(类型不一致)
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档