0

我在比较 Mysql 数据库中的两个值并显示最低的值时遇到问题。

例如我有这个:

value1 = 23.4
value2 = 4.479

我试过这个:

ORDER BY CAST(column AS SIGNED) ASC

但它不工作

同样,字段类型是 VARCHAR。

我正在寻找的结果应该是 23.4 而不是 4.479

有什么建议么?

4

3 回答 3

7

简而言之,如果要存储价格,则需要将列更改为 DECIMAL。VARCHAR 将按字母顺序排列。阅读 MySQL 中的数字类型

ALTER TABLE your_table MODIFY COLUMN price DECIMAL(10,3);
于 2013-01-25T20:22:28.117 回答
0

一个非常昂贵的解决方法是在排序之前将所有值转换为十进制:

SELECT name, price FROM test ORDER BY CAST(price AS DECIMAL(20, 10)) ASC LIMIT 1

只需确保您的 DECIMAL 限制足以正确转换列中的所有值。

于 2013-01-25T20:52:02.463 回答
0

如果您将其转换为十进制,它将起作用。

select * from tablename order by cast(price as decimal);

+--------+-------+
| name   | price |
+--------+-------+
| nail   | 0.95  |
| glue   | 9.23  |
| hammer | 45.12 |
+--------+-------+
于 2013-01-25T20:54:06.250 回答