1

我都有两mysqlint unsigned zerofill。第一5长,第二11长。第一个值采用任何5数字都没有问题。第二,无论如何将任何11数字转换为04294967295. 关于我能做些什么来解决这个难题的任何线索?

4

3 回答 3

2

您的数字大于整数字段可以处理的 - 2 32 - 1。

将列更改为无符号 BIGINT,您将可以达到 18,446,744,073,709,551,615。

于 2013-06-02T14:17:48.553 回答
0

您给整数字段的长度仅用于显示。如果您传递长度 11,则该列上的选择突击队将显示 11 位数字(这是您获得的数字的长度)。字段的实际大小取决于您为列选择的类型 ( int)。int-fields 能够存储 2 32 个不同的值。对于第一个值为 0 的无符号字段,这会产生最大值 2 32 - 1,这与输出中的数字相匹配。由于您输入的任何 11 位数字都将大于此数字,因此保存的值将是 2 32 - 1。

您可以通过使用 -type 来克服这个限制BIGINT,它允许您存储最多 2 64的任何数字。

于 2013-06-02T14:22:37.153 回答
0

UNSIGNED INT 的范围是 0 到 4294967295。因此,任何高于 4294967295 的值都会插入该最大值,因为这是 unsigned INT 可能的最大值。

于 2013-06-02T14:23:40.120 回答