包含小数和无小数的Varchar字段。
例如:
100.02
99
9
200.56
500.4
10.1
6
如何命令它以ASC顺序显示
我尝试下面没有运气的代码
SELECT * FROM posts ORDER BY CAST(price AS DECIMAL(10,2)) DESC LIMIT 0, 9
另外
SELECT * FROM posts ORDER BY convert(price, decimal) DESC LIMIT 0, 9
但上述代码似乎都不起作用。有人能指出我这样做的正确方法。
答案 0 :(得分:3)
排序问题是由于对数字使用了sting类型字段,它永远不会像人们期望的那样排序。
如果字段类型是价格,则不应使用float,而应使用 DECIMAL或NUMERIC
DECIMAL和NUMERIC类型存储精确的数值数据值。在保持精确精度很重要时使用这些类型,例如使用货币数据。
你不想要"近似"价格的价值
FLOAT和DOUBLE类型表示近似数值数据值