在mysql上需要大于20位的整数时该怎么办?

Key*_*ana 12 mysql int varchar bigint

似乎BIGINT是MySQL上可用的最大整数,对吧?

你需要存储BIGINT(80)时该怎么办?

为什么在某些情况下,比如Twitter API文档中的某个地方,他们建议我们将这些大整数存储为varchar

选择使用一种类型而不是另一种类型背后的真正原因是什么?

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)以及列类型.


Dou*_*ess 6

您可以指定 a numeric(65,0),但如果您需要变大,则需要一个 varchar。

选择一个而不是另一个的原因是使用、效率和空间。使用 int 比 bigint 更有效,我相信,如果您需要对其进行数学运算,则使用 numeric 。