2012-01-16 46 views
4

當我在數據庫的列上對desc/asc進行排序時,遇到了一個問題。比較MySQL變種

9980 
91 
883 
51 
507 
460 
286 
243 
23 
2131 

現在我想這是因爲我做了colum varchar。無論如何,讓它正確排序,而無需將列更改爲int?

感謝

+1

y是什麼y你有反對更改col到int? – 2012-01-16 19:46:16

+0

業務需求,不是我的... – Intelwalk 2012-01-16 19:59:31

+3

儘管有可能(請參閱下面的答案),但對轉換列進行排序可能會比將列轉換爲正確的數據類型更糟糕,並將其用於排序。 – Arjan 2012-01-16 20:03:09

回答

4

如果你想要的物品,如果他們的數字進行排序,cast他們的整數:

ORDER BY CAST (field AS SIGNED INTEGER) 
+0

這個伎倆!謝謝你的幫助Yogu! – Intelwalk 2012-01-16 19:59:04

1

,如果你必須:

ORDER BY CAST(`YOUR_COL` AS SIGNED) 

的DESC

ORDER BY CAST(`YOUR_COL` AS SIGNED) DESC