这些是我运行的查询的结果:
10
10.5
11
11.5
12
12.5
13
5
5.5
6
6.5
7
7.5
8
9.5
8.5
9
列的数据类型为nvarchar
。
我如何按结果订购?
我尝试Order by asc
和desc
但没有做任何事情。
答案 0 :(得分:7)
使用CAST
将值视为数字:
ORDER BY CAST(columnName AS FLOAT)
答案 1 :(得分:2)
使用varchar你不能......因为它会按字母顺序排序..
11
即7
。101
。甚至77
也会在float
之前出现。
最好将{{1}}作为数据类型。
答案 2 :(得分:2)
按字母顺序排序与数字排序不同。将您的列转换为浮点数或实数。
select cast(your_column as float) float_col
from your_table
order by float_col;
但理想情况下,你应该
从您的问题中不清楚您的应用程序是使用浮点数还是精确数字更好。