我一直以为 INT(5) 表示最大大小为 5 位数的数字。我尝试输入一个巨大的数字,在它里面,该数字被截断为 2147483647。
显然这不是 5 位数。那么 INT(5) 到底有什么限制呢?
显然这不是 5 位数。那么 INT(5) 到底有什么限制呢?
MySQL支持一个扩展,可以在类型关键字后的括号中指定整数数据类型的显示宽度。例如,INT(4) 指定了一个带有四位数字的显示宽度的INT。应用程序可以使用这个可选的显示宽度来显示列中宽度小于指定宽度的整数值,通过左填充空格。(也就是说,这个宽度存在于结果集返回的元数据中。是否使用由应用程序决定。)
INT
一直都是四个字节宽度,而 5
是“显示宽度”。
在MySQL中,INT(5)并不意味着值限制为5个字符长度。它仅意味着在返回这些值时,MySQL将尝试使用空格/零进行填充。
任何带符号的INT的数字范围,包括INT(10),INT(5)或任何其他INT(n)都是: -2,147,483,648 ... 2,147,483,647,最多为10位数字。
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
"M表示整数类型的最大显示宽度。最大合法显示宽度为255。显示宽度与类型可以包含的值的范围无关,如第10.2节“数字类型”所述。"https://alexander.kirk.at/2007/08/24/what-does-size-in-intsize-of-mysql-mean/
M 表示整数类型的最大显示宽度。对于浮点数和定点数类型,M 是可存储的总数字数量。对于字符串类型,M 是最大长度。M 的最大允许值取决于数据类型。
一个 int 类型可以有符号表示范围从 -2147483648 到 2147483647,无符号表示范围从 0 到 4294967295。
如果将一个大于该范围的数字作为有符号值输入,则它会被截断为该范围内的最大或最小值。