postgresql的int4类型为什么长度可以达到10位
两个问题:
- postgresql的int4类型为什么长度可以达到10位,但是属性中设定是32位
- postgresql的int4类型长度默认设定32位,为什么修改不了,修改后还是32位
附截图:
这是表结构中int4 的数据属性
这是小白我意图修改为11位的操作,最终还是32位,很无语
这是修改为10位长度的数值,保存成功
这是小白我意图修改为11位长度的操作,提示超出范围
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
用NaviCat连PG? 还有这种操作?
言归正传。看起来像是GUI工具上的一些显示内容让题主产生了误解,简单解释一下吧:
PG中
int4
类型对应的是SQL标准中的INTEGER
类型,而且PG实现的是源生的integer类型,是定长4字节(=32位bit)。其对应的十进制取值范围是-21474836478 ~ 2147483647
因此,题主截图所示的操作错误如下:
INTGEGER
类型的列修改其长度:上文已述,INTEGER
是定长的32位二进制,因此这样的操作必然是徒劳的。不过GUI也有值得吐槽的地方,其“长度”概念似乎有二义性
INTEGER
范围内的值和一个INTEGER
范围外的值。因此第二次尝试是失败的(第二次的12345678901
超过了INTEGER最大值2147483647
)另外,从题主的描述来看,题主似乎对于二进制的位数和十进制的位数没分清。题主一直在强调要插入一个11位的十进制数,可能题主看GUI里显示
INTEGER
类型有"32位"就误以为应该能够插入。但是实际上这里的32位是二进制的位数(这也是我上文所述的GUI的槽点: 等它显示NUMERIC类型时,长度恐怕就又要变成了十进制的长度的意思了)最后,如果题主要插入11位的十进制数,可以考虑将列的类型改为
BIGINT
(int8
)类型或直接用NUMERIC
类型