带有小数和非小数的 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
但是上面的代码似乎都不起作用。有人可以指出我执行此操作的正确方法。
最佳答案
排序问题是由于对数字使用了 sting 类型的字段,它永远不会像人类期望的那样排序。
如果字段类型是price,你不应该使用float,而应该使用 小数或数字
The DECIMAL and NUMERIC types store exact numeric data values. These types are used when it is important to preserve exact precision, for example with monetary data.
您不想要价格的“近似”值
The FLOAT and DOUBLE types represent approximate numeric data value
关于php - 订购带有小数和非小数的 varchar 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33601943/