开发者社区 问答 正文

mysql中为int设置长度除了表明数据长度外还有什么其他的好处

难道就为了不够宽度补零而存在?

展开
收起
蛮大人123 2016-02-06 23:32:39 3069 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    1、长度跟可以使用的值的范围无关,值的范围仅跟类型对应的存储字节数和是否unsigned有关;
    2、长度指的是显示宽度,比如,指定3位int,那么id为3和id为300的值,在显示的时候怎么对齐呢?按照手册的说法,是默认用“空格”在左边填充。比如下述表格
    `CREATE TABLE inttest (
    id int(3) unsigned NOT NULL AUTO_INCREMENT,
    value varchar(2) NOT NULL,
    PRIMARY KEY (id)
    ) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8`
    现在分别插入id长度为2,3,4,5位的数据,执行查询以后得到显示如下:
    9
    如果改成ZEROFILL,再次查询的结果如下:
    0
    我们会发现,不足3位长度的值会被自动填充,而超过3位长度的值就不会被填充了。

    2019-07-17 18:38:47
    赞同 展开评论