我在比较Mysql数据库中的两个值并显示最低值时遇到问题。
例如我有这个:
value1 = 23.4
value2 = 4.479
我试过了:
ORDER BY CAST(column AS SIGNED) ASC
但它不起作用
同样,字段类型为VARCHAR。
我要找的结果应该是23.4而不是4.479
有什么建议吗?
答案 0 :(得分:7)
简而言之,如果您要存储价格,则需要将列更改为DECIMAL。 VARCHAR将按字母顺序排列。阅读MySQL中的Numeric Types。
ALTER TABLE your_table MODIFY COLUMN price DECIMAL(10,3);
答案 1 :(得分:0)
一个相当昂贵的解决方法是在排序之前将所有值转换为十进制:
SELECT name, price FROM test ORDER BY CAST(price AS DECIMAL(20, 10)) ASC LIMIT 1
只需确保您的DECIMAL限制足以正确转换列中的所有值。
答案 2 :(得分:0)
如果将它CAST到DECIMAL,它将起作用。
select * from tablename order by cast(price as decimal);
+--------+-------+
| name | price |
+--------+-------+
| nail | 0.95 |
| glue | 9.23 |
| hammer | 45.12 |
+--------+-------+