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

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

tab的数据类型的结构

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

tab的数据

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

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

在升序排序时发生了这样的事情
关于数据库中Char类型,数值比较的探究

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

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

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

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

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

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

990>980>101

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

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

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

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