我按价格排序,看:
SELECT Price
FROM re2_listings
ORDER BY Price asc
结果:
1.200.000,00
1.500.000,00
200,00
3.000,00
......但正确的方法是:
200,00
3.000,00
1.200.000,00
1.500.000,00
明白了吗?怎么做?
答案 0 :(得分:3)
显然,VARCHAR不是存储数值的最佳数据类型。如果必须使用它,则需要在声明的SELECT和ORDER BY部分中将price列CAST为适当的数字类型,或者从视图中创建包含CAST和SELECT的视图。
CAST to的数据类型和CASTing的语法取决于产品。
答案 1 :(得分:0)
$q1 = "select Price from re2_listings order by CAST(Price AS Float) asc";
答案 2 :(得分:0)
首先,了解您的SQL变体有助于回答您的问题。
如果您仍然能够控制架构,那么最好使用数字数据类型(例如int或float)作为列,并在显示时将其格式化为价格。
答案 3 :(得分:0)
MySQL或SQL Server支持:
SELECT t.price
FROM (SELECT r.price
CAST(r.price AS DECIMAL(15,2)) 'dprice'
FROM RE2_LISTING r) t
ORDER BY t.dprice
我将varchar列转换为适当的数据类型,并使用了别名dprice
,因此我可以引用它进行排序。如果您按升序排序,如果不想要,则无需指定ASC
- 这是默认值。