【发布时间】:2014-06-18 13:04:12
【问题描述】:
我有这个 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
【问题讨论】:
-
查看stackoverflow.com/questions/12126991/…了解如何转换为int
-
这是应该是小数的文本列的预期行为。要更改它,首先备份您的数据库,然后运行以下命令:ALTER TABLE user_cars MODIFY COLUMN price DECIMAL(10,2);
-
@TimBurch 是对的 - 您需要更改数据的类型。您说这是第三方数据,但它显然在您的数据库中...您只是从第三方文件上传数据吗?没有什么能阻止您首先加载到临时文件,然后在到达最终目的地时进行转换。数值数据应存储在数值列中。