我有这个专栏
INT(10) ZEROFILL NOT NULL DEFAULT '0000000000',
但是,当我插入9100000010
之类的内容时,我会得到4294967295
它应该允许10位数,对吗?
如何做到这一点?
答案 0 :(得分:5)
MySQL中INT字段中可能的最大值为2147483647
,您的值9100000010
大于此值。这就是溢出到4294967295
的原因,即无符号整数的Max。
11.1.4.1. Integer Types (Exact Value)
INT 4 -2147483648 2147483647
如果要存储较大的数字,请使用BIGINT
,其范围为:
BIGINT 8 -9223372036854775808 9223372036854775807
答案 1 :(得分:3)
Int具有最大值范围:
INT 4 -2147483648 2147483647
0 4294967295 (unsigned )
因此,由于溢出,您获得了最大值。 使用bigint代替,它有8个字节 你会没事的。
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html#integer-types
BIGINT 8 -9223372036854775808 9223372036854775807
0 18446744073709551615
答案 2 :(得分:2)
在MySQL中,INT(10)并不意味着值限制为10个字符的值。这只意味着MySQL会在返回时尝试用空格/零填充这些值。
任何带符号的INT的数值范围包括INT(10),INT(5)或任何其他INT(n): -2,147,483,648 ... 2,147,483,647,最多10位数。
答案 3 :(得分:0)
我相信你得到int max值。 INT(10)表示数字填充,而不是限制字符数。
MySQL会在返回时尝试用空格/零填充这些值。
答案 4 :(得分:0)
你达到int的最大值。 mysql中int的int最大值范围是4294967295(unsigned)。 所以你必须使用BIGINT。您可以在此处获得有关此内容的更多信息: Mysql Numeric types
希望这有帮助
亲切的问候
答案 5 :(得分:0)
它应该允许10位数,对吗?
否,mySQL的大小和mySQL中的整数类型是当字段指定了ZEROFILL时设置显示宽度。
例如,如果您插入的值是123456,那么当您查询它时,它将显示为0000123456,它只是显示宽度,不会影响该值。
所以值范围由数据类型本身决定,而不是显示宽度。要存储更大的值,您应该将数据类型更改为合适的值,例如BIGINT。
INT : A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295.