2012-01-16 15 views
4

データベースの列にdesc/ascをソートするときに、このようにソートする際に問題があります。MySQL varcharsを比較する

9980 
91 
883 
51 
507 
460 
286 
243 
23 
2131 

今、私は大腸varcharを作ったからです。とにかくそれを列にintに変更せずに正しくソートするには?整数へ

おかげ

+1

y colをintに変更することに反対していますか? –

+0

ビジネス要件ではなく、私の... – Intelwalk

+3

キャストされた列を並べ替えることはおそらく、正しいデータ型に変換してソートに使用するよりもかなり悪くなります。 – Arjan

答えて

4

あなたは、彼らが数字であるかのようにアイテムをソートしたい場合は、castそれらは:

ORDER BY CAST (field AS SIGNED INTEGER) 
+0

それはトリックでした! Yogu助けてくれてありがとう! – Intelwalk

1

あなたがしなければならない場合:

ORDER BY CAST(`YOUR_COL` AS SIGNED) 

DESC

ORDER BY CAST(`YOUR_COL` AS SIGNED) DESC