当数据表字段类型为字符串,而存储数据为数字,但又需要对该字段使用order by进行排序时,会发现10排在了2的前面
+———–+
| code |
+———–+
| 1 |
| 10 |
| 2 |
| 5 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
+———–+
很明显,我想要的结果应该是 1,2,3,4,5,6,7,8,9,10 这样的。但是这个10排在了2的前面。按照字符串来排的。其实我是想把它当做数值来排。
手动转换类型:
用下面的方法就可以了,使code+0之后再排序,问题解决了。
order by code+0 ASC;
laravel写法:
orderByRaw('code+0 ASC')
本帖已被设为精华帖!