当列格式为varchar时,如何查询asc(或desc)的顺序

时间:2014-01-15 04:32:26

标签: php mysql

我有一张表格product(ID, name, quanlity),其质量为varchar(55)

使用我的数据

1 | Iphone 3  | 7
2 | Iphone 3S | 8
3 | Iphone 4  | 79
4 | Iphone 4S | 9
5 | Iphone 5  | 10

我的疑问:

Select * From product order by quanlity DESC

但是结果不能订购quanlity,因为quanlity是varchar,如何查询排序

    4 | Iphone 4S | 9
    2 | Iphone 3S | 8
    3 | Iphone 4  | 79
    1 | Iphone 3  | 7    
    5 | Iphone 5  | 10

3 个答案:

答案 0 :(得分:3)

不是一个优雅的方法,但您可以将列强制转换为整数

SELECT * FROM product ORDER BY CAST(quanlity AS UNSIGNED)

注意:如果您的某些内容不是整数,那么您将遇到性能问题和意外顺序。我建议你最好把列类型更改为整数(如果有可能 - 甚至有问题)

答案 1 :(得分:1)

试试这个

SELECT * FROM `product ` ORDER BY convert(`quanlity`, decimal) DESC;

答案 2 :(得分:0)

您可以将列刻录为其他类型以允许自然数字排序:

SELECT * FROM `product ` ORDER BY CAST(`quanlity` AS unsigned)