用于排序数字字段的SQL查询

Sac*_*n R 0 mysql sql sorting field

我有一个类型的列VARCHAR,存储数字,如10,11,16.5,24,43,12,100等.

我想订购这些字段,但它的排序如下:

10
11
12
16.5
100
24
43
Run Code Online (Sandbox Code Playgroud)

我想要这个结果:

10
11
12
16.5
24
43
100
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Jor*_*ing 6

VARCHAR是一个字符串类型,所以它按字母顺序排序,这是预期的行为.如果可能,您应该将列更改为数字类型.如果这不可能,您可以将值转换为如此数字:

SELECT ... ORDER BY CAST(column_name AS DECIMAL)

但是,如果数据库中有很多行,这将影响您的性能.

  • 当然,只有在该字段的结果集中没有非数字数据时,它才会起作用. (2认同)