我有这个SQL查询
SELECT `price` FROM `used_cars` ORDER BY `price` DESC
所以我显然想按价格从高到低排序。然而,它似乎采取了第一个数字,并按此排序。我的理论是它将它视为一个字符串,并且因为列是varchar它是有道理的。但是,这是第三方数据,所以我坚持使用它。我如何订购以便让更大的数字出现?
所以这是一个如何订购的例子
9698
8999
8988
8900
5983
4988
4984
42441
40949
3995
3995
38995
37685
36999
35983
34990
34785
32999
30594
29999
29999
2862
28000
27995
答案 0 :(得分:4)
您应该将列转换为数字数据类型。您可以在表定义或查询本身中执行此操作,例如:
... ORDER BY `price`+0 DESC
答案 1 :(得分:2)
这应该有效:
(...)
ORDER BY CAST (price AS INT)
答案 2 :(得分:2)
CAST应该有效:
SELECT CAST(price AS UNSIGNED) AS NumPrice
FROM used_cars
ORDER BY NumPrice DESC
答案 3 :(得分:-1)
这会有效,但效果不好
SELECT price FROM used_cars ORDER BY CAST(price AS int) DESC