关于数据库中Char类型,数值比较的探究

关于数据库中Char类型,数值比较的探究

tab的数据类型的结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YLQNrRyv-1578017471245)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200103094621741.png)]

tab的数据

在这里插入图片描述

这里有意的将TID这一列的数据类型设置为char(字符类型)。

在升序排序时发生了这样的事情
在这里插入图片描述

对比之后的关系为99>98>101

这明显是违背我们的常规逻辑的

经过测试判断,当添加过滤条件WHEREtid>101时101记录被过滤掉了

tid>980时98这条记录被过滤掉了。

tid>990时99这条记录被过滤掉了。

这里我们可以发现当tid这一列数据进行排序时实际是

990>980>101

这种顺序排列就符合了我们的常规逻辑

但是99的数值为什么会变成990呢

这里终于是想起了之前所遗忘的知识

字符串类型对比是每一位都进行对比如果没有的拿0来代替,这也导致了当字符串在对数值进行对比时,时常违法我们的逻辑,因此在数据库中数据类型极为重要,可能会应为数据类型影响我们最终查询的结果

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页