我有两个mysql
列int unsigned zerofill
。第一个5
长度,第二个11
长度。第一个值取任何5
个数字都没有问题。第二种,无论将任何11
位数转换为04294967295
。关于我可以做些什么来解决这个难题的任何线索?
答案 0 :(得分:2)
您的数字大于整数字段可以处理的数字 - 2 32 - 1。
将列更改为无符号BIGINT,最高可达18,446,744,073,709,551,615。
答案 1 :(得分:0)
您给整数字段的长度仅用于显示。如果传递长度为11,则该列上的选择命令将显示11个数字(这是您获得的数字的长度)。字段的实际大小由您为列选择的类型(int
)确定。 int
- 字段能够存储2个 32 个不同的值。对于具有0作为其第一个值的无符号字段,这将导致最大值2 32 - 1,这与输出中的数字匹配。由于您输入的任何11位数字都将大于此数字,因此保存的值将为2 32 - 1.
您可以使用BIGINT
- 类型来克服此限制,该类型允许您存储最多2个 64 的任何数字。
答案 2 :(得分:0)
UNSIGNED INT的范围是0到4294967295. so任何高于4294967295的值,它将插入该最大值,因为这是无符号INT可能的最大值。