pax*_*blo 26
大整数实际上不限于20位,它们仅限于可以用64位表示的数字(例如,99,999,999,999,999,999,999
尽管长度为20位,但该数字不是有效的大整数).
你有这个限制的原因是底层硬件可以相对快速地操作本机格式整数,而一个数字(往往)的文本版本需要一次处理一个数字.
如果你想要一个大于最大的64位无符号整数的数字,18,446,744,073,709,551,615
那么你需要将它存储为varchar
(或其他文本字段),并希望你不需要对它进行太多的数学操作.
或者,您可以查看具有更大范围但精度更低的浮点数,或者应该能够为整数值提供65位数的十进制数,decimal(65,0)
以及列类型.
您可以指定 a numeric(65,0)
,但如果您需要变大,则需要一个 varchar。
选择一个而不是另一个的原因是使用、效率和空间。使用 int 比 bigint 更有效,我相信,如果您需要对其进行数学运算,则使用 numeric 。