varchar数量最少

时间:2013-01-25 20:21:15

标签: php mysql

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

例如我有这个:

value1 = 23.4
value2 = 4.479

我试过了:

ORDER BY CAST(column AS SIGNED) ASC

但它不起作用

同样,字段类型为VARCHAR。

我要找的结果应该是23.4而不是4.479

有什么建议吗?

3 个答案:

答案 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 |
+--------+-------+