我有 2 种产品,一种是 1000 美元,所以我将其价格插入数据库:
1000.00
还有 34 美元,所以我插入:
34.00
但是当我按价格(从低到高)对产品进行排序时,1,000 美元的产品排在 34 美元的产品之前,这是为什么?
查询:
SELECT * FROM products ORDER BY price ASC;
编辑
这是一个 varchar 字段。我会使用 int,但我需要小数点才能被接受。
如果我将它转换为 int,有什么方法可以转换成这样:
10000
当显示给用户时,以更用户友好的形式显示:
10,000 美元
顺便说一句,我正在使用 PHP 编写脚本。
最佳答案
因为字符串是按字典顺序排序的。您需要将其转换为数字以进行数字排序。
SELECT * FROM products ORDER BY CAST(price AS DECIMAL) ASC;
(最好将价格存储为美分的倍数整数(100000 和 3400),或使用 DECIMAL。)
编辑:您可以使用 money_format
in PHP将数字转换为货币格式。参见 http://www.ideone.com/VEcgy举个例子。
关于mysql - 为什么 MySQL 将 1000.00 视为小于 34.00 的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3172499/