网站首页 > 博客文章 正文
这个视频给大家分享一个关于mysql字段类型的小知识点。先看我这里有一张表,它里面有这么多条数据,现在我来执行where id等于a,大家觉得能不能查出数据?仔细看,这里并没有id等于a的数据,但是我现在来执行它却能够查出来,它把id等于0的数据给查出来了,这是为什么?
这里的根本原因是首先id的类型是int类型,另外一点我这里用的是字符类型,所以对于mysql而言,它其实在执行这个等式的时候,因为等式左右两边数据类型不一样,所以说mysql它会去进行类型转换。
具体的规则就是把字符转成了数字,对于这个字符a,它转成的数字是多少?其实是0,比如说可以来验证一下a等于0,就是如果这里返回的是1,就代表它等式左右两边是相等的,看到没?所以说在mysql里面,字符的这种a会转成0,同样的你是字符b,它其实也会转成0,所以说就会把id等于0的数据给查出来。
那么是不是所有的字符都会转成0?并不是,比如说假设我前面写了一个一,那么它查出来的数据就是id等于1的,所以说包括你再写个8,也是一样的,就会查出id等于8的。所以在mysql里面,其实会去把这个字符的数字的前缀,把它取出来,然后作为最终转换出来的数字,所以说这个大家要注意。
所以在用的时候就要注意了,比如说假设我现在有一个mybatis,我现在这边其实就有一个id的,假设有一个id字段,我这里写的是String,然后数据库的类型可能是int类型_info,就我就建议大家不要这么来用er_info,因为你可能在使用的时候,你这里可能传了个字符一,你发现它是能够正确的查出数字的。
这是因为mysql,它会把这个字符2,就转成对应的数字2,所以能够查出对应的数字。但是如果有一天想传一个乱七八糟(特殊)的数字进来,可能会想到这个数字符串应该是查不到数据的,但是这个就不一定了,有可能是能够查出来数据的。
所以大家在用mybatis的时候就要注意了,如果数据库的字段类型确实是int类型,那么这里就不要用shift了。
喜欢就点个关注吧。
猜你喜欢
- 2024-09-10 第三章 SQL数据字段、字段类型简介
- 2024-09-10 MySQL中查看数据表结构和字段信息的方法!查看字段数据类型
- 2024-09-10 解决mybatis-plus修改数据库字段数据为NULL时失效的问题
- 2024-09-10 如何较方便给上百张数据库表添加表字段
- 2024-09-10 建议收藏|ArcGIS中操作字段相关代码汇总
- 2024-09-10 如何把数据库表中某个字段的所有2.0,3.0带.0的数据批量修改为2,3
- 2024-09-10 MySQL数据库教程-数据表字段约束(mysql数据库字段长度限制)
- 2024-09-10 简单地运用MySQL的增删改查(mysql增删改查语句)
- 2024-09-10 Excel工作表中的7个数据库函数,易懂易理解,方便且实用
- 2024-09-10 MySQL数据库知识汇总(数据库mysql知识点)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)