首先我们建立一个简单的数据表,这个表只有两个字段,ID和a,a字段的类型是int类型。
我先的需求是对a字段进行正序排列
SELECT * FROM `test` ORDER BY `a` ASC;
这个时候我们得到了想要的数据,如下图
可是小童鞋,将a字段建成了varchar类型,这个时候我们正序查询,结果如下图
这个时候我们发现数据不是按照我们想要的顺序进行排练,而是按照第一位的数值大小进行排列,其实原因很简单,正如人的书写习惯,从左往右,字符串的比对也是从左往右,逐一进行大小比对,21作为字符串而不是整形数字时,它的首位2要比1大,所以作为最大字符被排列在了最后。