int是什么-MySQL8.0的INT类型有什么不同?

生活百科11个月前发布 aixure
43 0 0

之前写过了一篇文章介绍mysql中INT类型字段的长度问题:

即你手动设置int类型的长度其实是没有意义的,必须结合zerofill才有意义。

后来有小伙伴私信我,说是不是mysql8.0之后的版本直接就不支持int长度了,我现在用的就是mysql8.0,赶紧去试了一下,还真是。

int是什么-MySQL8.0的INT类型有什么不同?

为什么会这样呢?

原来,在MySQL 8.0版本及更高版本中,INT类型不再支持长度限制,因为该长度限制没有实际意义。在MySQL中,INT类型使用4个字节存储,可以存储范围是从-2147483648到2147483647的整数值,因此无需指定长度。如果需要更大的整数范围,则可以使用BIGINT类型。

我又心生疑惑,那么zerofill还有用吗?

测试一张表:

CREATE TABLE users (
  id INT(4) ZEROFILL
);

插入一条数据:

INSERT into users values (1);

结果:

int是什么-MySQL8.0的INT类型有什么不同?

看起来真的没用了。

其实想想也很好理解,如果你要得到在前面补零的效果,完全可以用LPAD函数。

SELECT LPAD(id,4,'0'id from users where id = 1

int是什么-MySQL8.0的INT类型有什么不同?

这里说明一点,不太建议直接把id设置成varchar,然后用LPAD补全后插入,因为这样的话就是字符串,不方便排序。

注意,用了LPAD函数后,java层接收这个字段就得用String啦。

这算是一个小tip吧int是什么,实际开发中我好像也很少会用到 ZEROFILL ,不过以后我们再用int字段int是什么,就别再手动设置长度啦~~

限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信:

© 版权声明

相关文章

暂无评论

暂无评论...