2014-01-15 47 views
0

我有一個表product(ID, name, quanlity)用的quanlity是varchar(55)如何查詢以遞增(或遞減)時,列格式爲varchar

隨着我的數據

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是varchar,如何正確查詢排序

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

爲什麼有你把'quanlity'列保存爲varchar? – user2936213

+0

爲了上帝的緣故,重新命名你的專欄 –

回答

1

試試這個

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

不是一個巧妙的方法,但你可以轉換列整數

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

注意:你會打性能問題和意外的訂單時,你有一些東西,不是整數。我建議你最好改變列類型爲整數(如果可能的話 - 即使有一些麻煩)

0

您可將列轉換爲不同的類型,允許一個自然數字排序:

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