我被告知mysql中一个整数的最大值约为40亿,但这似乎使用了10个字符。但是,当我指定整数的字符数时,我使用11个字符。额外角色会发生什么?
答案 0 :(得分:2)
这是11个字符。额外数字是-
的负数。不要相信我,你可以算here。
我在午餐时间之前写了这个答案,而且我一直困扰我,因为在most significant bit
中我没有包含任何内容,因为它在这种情况下非常相关。所以,我包括Wikipedia's treatment,因为我不想重新开车。
答案 1 :(得分:2)
整数保存为32位数。这意味着,它可以存储2^32 = 4,294,967,296
个不同的值。现在,如果您选择使用烧结整数(默认情况下这样做),您将能够在该32位的[-2147483648, 2147483647]
区间内表示数字。
如果您现在将最低可能的数字转换为字符串,您会注意到它有11个字符,包括减号。
通常,您应该尝试将数字用作数字而不是字符串。尽管两者看起来相似,但它们是仅包含数字字符的字符串与实际数字值之间的主要区别。
答案 2 :(得分:0)
实际上是11个字符。如果你超过最大限制而不仅仅是整数,但是对于任何字段,这些值都会被截断。
答案 3 :(得分:0)
它取决于您在mysql和事务性/非事务性表中使用的模式。默认情况下,mysql会将数字截断为最接近的数字。如果严格模式,则查询将失败。查看更多信息http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html