Order by xxx的时候排序出现了混乱
下面是示例
首先我们新建一个数据表,作为测试 并且把测试用的字段改为varchar类型
数据如下
现在我们执行SQL
SELECT `*` FROM `t_test` ORDER BY `number` ASC
按照预期的状态 他得到的结果应该是
但是 实际的结果却变成了
结论
当我们在数据库中对varchar类型字段进行排序的时候,即使数据是纯数字,但是依然会按照字符串的排序规则进行排序。
解决方法
如果我们的表已经有很多数据了不方便改表结构的时候,我们可以使用如下SQL
SELECT `*` FROM `t_test` ORDER BY `number`+0 ASC
这样就可以让他转为数字类型的排序了