Mysql
訂購保存為 varchar 的大數
據我所知,無符號 bigint 是 mysql 中的最大 int 大小。因此,為了更好地衡量,我使用 varchar(255),因為我的數據庫中的某些值大於無符號 bigint。
我想訂購它們,就好像它們是 int 一樣。這可能嗎?
範例:999,1000,1001
通過 Int 訂購此產品為 999,1000,1001 或 1001,1000,999
通過 varchar 訂購此內容為 1000,1001,999 或 999,1001,1000
由於通過 varchar 排序一次比較一個字元串
我想知道是否可以通過 varchar 儲存它,但排序類似於 int
如果所有的值都是正整數並且它們從來沒有前導 0,您可以嘗試以下排序方法:
SELECT * FROM MyTableOfBigNumbers ORDER BY CHAR_LENGTH(IntegerStringColumn) ASC , IntegerStringColumn ASC ;
這樣,較短的字元串文字將正確地排在較長的字元串之前,正如預期的那樣。具有相同位數的數字將根據您的活動排序規則進行排序,我希望它已經以理智的方式對數字進行排序(0、1、2、3、4、5、6、7、8、9)。
要反轉排序方向,只需替換
ASC
為DESC
:SELECT * FROM MyTableOfBigNumbers ORDER BY CHAR_LENGTH(IntegerStringColumn) DESC , IntegerStringColumn DESC ;