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