2013-04-18 44 views
0

我有一個具有VARCHAR列的MySQL表。該列只包含數字,我希望能夠對它進行數字排序,例如100,101,1001。目前它將它們排序爲100,1001,101等。我聽說我可以簡單地修改表來添加collat​​e屬性,所以它將按數字排序。當我鍵入「顯示排序規則」時,我看不到任何排序規則類型,它似乎是將數字列視爲varchar列。使用分類將varchar列作爲數字排序

所以我的問題是,我可以使用哪種排序方式,將數字排序此varchar列?

回答

2

如果這個varchar列只包含數字,那麼它應該是一個整數列。否則,你可以做

ORDER BY CAST(col AS SIGNED) 

See the demo

0

沒有內置整理這將比較數值的數值。

您可以開發自己的一個,但是,您將難以部署它共享主機和類似的東西。

如果你是不使用索引排序OK,你可能只是將其轉換爲整數:

SELECT * 
FROM mytable 
ORDER BY 
     CASE field REGEXP '^-?[0-9]$' THEN CAST(field AS SIGNED INTEGER) END 
相關問題