MySQL 查詢中,將文字轉為數字再排序


在欄位中,如果用 varchar 來儲存數字.
之後在顯示時作出排序後.
會發生以下的情況:

1
1,10,11,12,13,14,15,16,17,18,19,2,20,21,3,4,5,6,7,8,9

而不是:

1
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21

其實只需要在排序時改變一下就可以

1
2
3
4
5
-- 原代碼
ORDER BY [column] ASC

-- 改為
ORDER BY CAST([column] AS UNSIGNED) ASC