Mysql

訂購保存為 varchar 的大數

  • October 11, 2021

據我所知,無符號 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)。

要反轉排序方向,只需替換ASCDESC

SELECT
 *
FROM
 MyTableOfBigNumbers
ORDER BY
 CHAR_LENGTH(IntegerStringColumn) DESC
, IntegerStringColumn              DESC
;

引用自:https://dba.stackexchange.com/questions/300928