一尘不染

如何按数字将varchar字段排序?

sql

我的排序/排序方式有问题,无法按我的要求工作。

SELECT `proc` FROM `table` ORDER BY `proc` DESC;

结果:

80.0 proc
70.0 proc
60.0 proc
50.0 proc
40.0 proc
200.0 proc
20.0 proc
190.0 proc
180.0 proc
170.0 proc
160.0 proc
150.0 proc
140.0 proc
130.0 proc
120.0 proc
110.0 proc
100.0 proc

我需要的是:

200.0 proc
190.0 proc
180.0 proc
170.0 proc
160.0 proc
150.0 proc
140.0 proc
130.0 proc
120.0 proc
110.0 proc
100.0 proc
90.0 proc
80.0 proc
70.0 proc
60.0 proc
50.0 proc
40.0 proc
20.0 proc

怎么做 ?


阅读 199

收藏
2021-03-17

共1个答案

一尘不染

看起来“ proc”是一个字符串(varchar字段),因此按词法进行排序。如果是这样,您可能可以通过以下方式订购

SELECT `proc` FROM `table` ORDER BY convert(`proc`, decimal) DESC;

请注意,这样的查询将非常慢,对于任何严重的使用,最好使用数字列来存储数字数据。

2021-03-17