据我所知,无符号bigint是mysql中最大的int大小。因此,为了更好地衡量,我使用 varchar(255) 因为我的数据库中的某些值大于无符号的 bigint。
\n我希望对它们进行排序,就好像它们是一个 int 一样。这可能吗?
\n示例:\n999,1000,1001
\n通过 Int 订购此值为 999,1000,1001 或 1001,1000,999
\n通过 varchar 排序\n1000,1001,999 或 999,1001,1000
\n由于通过 varchar 排序每次比较一个字符串
\n我\xe2\x80\x99m想知道\xe2\x80\x99是否可以通过varchar存储它但像int一样排序
\n如果所有值都是正整数并且它们从来没有前导 0,您可以尝试以下排序方法:
SELECT
*
FROM
MyTableOfBigNumbers
ORDER BY
CHAR_LENGTH(IntegerStringColumn) ASC
, IntegerStringColumn ASC
;
Run Code Online (Sandbox Code Playgroud)
这样,较短的字符串文字将正确地出现在较长的字符串文字之前,正如预期的那样。具有相同位数的数字将根据您的活动排序规则进行排序,我希望它已经以合理的方式对数字进行排序(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)。
要反转排序方向,只需替换ASC
为DESC
:
SELECT
*
FROM
MyTableOfBigNumbers
ORDER BY
CHAR_LENGTH(IntegerStringColumn) DESC
, IntegerStringColumn DESC
;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1576 次 |
最近记录: |