Rock笔记
~/rocknotes/articles/395.md article
// article · mysql

MySQL 中使用 order by,10 排在 2 的前面的处理办法

当数据表字段类型为字符串,而存储数据为数字,但又需要对该字段使用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')




回复// 0 replies

最新回复 ↓
// 暂无回复

回复功能沿用原详情页:前往原页面参与讨论 →