代码之家  ›  专栏  ›  技术社区  ›  sdot257

括号里的数字是什么意思?

  •  26
  • sdot257  · 技术社区  · 14 年前

    我一直以为括号里的数字代表字段的长度?然而,我明白情况并非总是如此。可能是mysql的问题?有人告诉我,如果我将一个字段设置为9个字符长,我可以添加一个超过9个字符的值,但只保存前9个字符。

    例子。。。

    create table "person" ( id INT, age INT(2));
    

    如果是这样的话,我不应该选择TINYINT而不是INT来表示年龄吗?

    2 回复  |  直到 14 年前
        1
  •  44
  •   Pekka    14 年前

    INT(2) 将生成一个INT minimum display width of 2

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

    显示宽度不限制可以存储在列中的值的范围。它也不能防止大于列显示宽度的值被正确显示。例如,指定为SMALLINT(3)的列通常的SMALLINT范围为-32768到32767,超出三位数字允许的范围的值将使用三位以上的数字完整显示。

    这是真的 ZEROFILL 已使用(请参阅链接页)。

    未签名的 TINYINT (0…255)也可以,除非 cryopreservation 在您的应用程序生命周期中向前迈出了一大步。

        2
  •  -3
  •   Neil    14 年前

    vchar之类的字段类型也是这样,但对于数字,它表示它用来表示数字的字节数。两个字节的整数意味着您可以保存一个数字2^16-1(一个字节8位,总共16位)。如果它是年龄,我想你应该是安全的两个字节。;)