You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算Oracle中NUMBER数据类型的字节占用大小

Oracle NUMBER类型存储空间计算说明

你对NUMBER存储空间的计算思路存在误区,所有声明的NUMBER类型(无论精度p、刻度s设为多少),单个值的存储空间都在1~22字节之间,最大仅为22字节,不存在你计算的几百字节的情况。

Oracle的NUMBER采用变长压缩的科学计数法存储,内部结构为:

  • 1字节存储该数值的总长度
  • 1字节存储带符号的指数信息
  • 最多20字节存储尾数数据(每字节可存储2位十进制数字)
    三部分加起来的总长度最大为22字节,这个上限对所有NUMBER类型声明都通用。

NUMBER(p,s)中的p和s仅用来限制存入数值的合法范围,和实际占用的存储空间没有线性对应关系:

  • NUMBER(38,0)代表可存储最大38位的整数,只有存入接近38位的超大整数时,才会占满22字节的上限,存入小数值(例如100)仅占用3字节左右。
  • NUMBER(4,2)代表可存储的数值范围为-99.99~99.99,哪怕存入最大值99.99,实际占用也仅为3字节,远低于22字节的上限。

你查阅的官方文档描述是NUMBER类型的通用规则,1~22字节就是单个值的完整存储范围,不需要和精度p做乘法计算。

内容的提问来源于stack exchange,提问作者Student Work

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:36:02