之前写过了一篇文章介绍mysql中INT类型字段的长度问题:
即你手动设置int类型的长度其实是没有意义的,必须结合zerofill才有意义。
后来有小伙伴私信我,说是不是mysql8.0之后的版本直接就不支持int长度了,我现在用的就是mysql8.0,赶紧去试了一下,还真是。
为什么会这样呢?
原来,在MySQL 8.0版本及更高版本中,INT类型不再支持长度限制,因为该长度限制没有实际意义。在MySQL中,INT类型使用4个字节存储,可以存储范围是从-2147483648到2147483647的整数值,因此无需指定长度。如果需要更大的整数范围,则可以使用BIGINT类型。
我又心生疑惑,那么zerofill还有用吗?
测试一张表:
CREATE TABLE users (
id INT(4) ZEROFILL
);
插入一条数据:
INSERT into users values (1);
结果:
看起来真的没用了。
其实想想也很好理解,如果你要得到在前面补零的效果,完全可以用LPAD函数。
SELECT LPAD(id,4,'0') id from users where id = 1
这里说明一点,不太建议直接把id设置成varchar,然后用LPAD补全后插入,因为这样的话就是字符串,不方便排序。
注意,用了LPAD函数后,java层接收这个字段就得用String啦。
这算是一个小tip吧int是什么,实际开发中我好像也很少会用到 ZEROFILL ,不过以后我们再用int字段int是什么,就别再手动设置长度啦~~
限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信:
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...