mysql中的INT(5)是什么意思?

43
我一直以为 INT(5) 表示最大大小为 5 位数的数字。我尝试输入一个巨大的数字,在它里面,该数字被截断为 2147483647。
显然这不是 5 位数。那么 INT(5) 到底有什么限制呢?
7个回答

48

来自MySQL文档,数字类型属性

MySQL支持一个扩展,可以在类型关键字后的括号中指定整数数据类型的显示宽度。例如,INT(4) 指定了一个带有四位数字的显示宽度的INT。应用程序可以使用这个可选的显示宽度来显示列中宽度小于指定宽度的整数值,通过左填充空格。(也就是说,这个宽度存在于结果集返回的元数据中。是否使用由应用程序决定。)


回答得很好!不知怎么地,我错过了文档中的内容!这个答案应该是问题最正确的答案。 - mvsagar
那么针对小数还是怎样? - Bitterblue
您可以以十进制、二进制、八进制和十六进制表示INT。而且宽度也会不同!!! - Bitterblue
@Bitterblue 是的,但这个宽度是针对(常见的)十进制表示法的。 - ypercubeᵀᴹ

31

INT 一直都是四个字节宽度,而 5 是“显示宽度”。


你能举个例子吗? - mikewasmike
但是服务器如何使用它?尽管宽度为5,服务器允许具有超过5个数字的整数。这仅适用于使用数据库访问接口(如ODBC和JDBC驱动程序)构建的应用程序吗? - mvsagar
OK。@ypercube的回答澄清了我的疑惑。 - mvsagar

18

在MySQL中,INT(5)并不意味着值限制为5个字符长度。它仅意味着在返回这些值时,MySQL将尝试使用空格/零进行填充。

任何带符号的INT的数字范围,包括INT(10),INT(5)或任何其他INT(n)都是: -2,147,483,648 ... 2,147,483,647,最多为10位数字。


很惊讶这是我第一次真正理解INT长度的概念,非常感谢! - Tompina

6

3

2

一个 int 类型可以有符号表示范围从 -2147483648 到 2147483647,无符号表示范围从 0 到 4294967295。

如果将一个大于该范围的数字作为有符号值输入,则它会被截断为该范围内的最大或最小值。


0
关于MySQL中int(N)的含义,一个非常普遍的误解是该列可以存储长度为N位数的最大整数值。然而,这是不正确的。int(N)并不确定该列可以存储的最大值。N是整数列的显示宽度,不同于字符列,其中数字表示可存储的字符数。
括号中的数字并不确定整数字段中可以存储的最大和最小值。可以存储的最大和最小值始终是固定的。下表显示了每种整数类型所需的存储和范围。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接