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

Oracle中Number(38,127)、Number、Number(*)与Number(*,127)的区别

Oracle NUMBER四种定义的具体差异

核心规则前提

Oracle NUMBER类型的定点/浮点特性,核心取决于是否显式指定固定的scale:显式指定scale时为定点数,严格遵循位数限制;未指定scale时为动态浮点数,仅限制总有效位数。


  • NUMBER(38,127)
    这是显式指定精度(precision=38,总有效位数上限)和小数位(scale=127,小数点右侧最多保留127位有效数字)的定点数类型。对于1e-130(即小数点后129个0加1),其有效小数位在第130位,超出了scale=127的限制,因此会被截断为0。

  • NUMBER(*,127)
    *代表precision取默认最大值38,其余逻辑和NUMBER(38,127)完全一致:属于定点数,限制小数点右侧最多127位有效数字。1e-130的有效小数位超范围,同样被截断为0。

  • NUMBER
    未指定任何精度和小数位,默认总有效位数上限为38,scale会根据存储值动态调整(范围-84到127)。此时Oracle以浮点数方式存储,只要数值的有效位数不超过38,就能完整保留。1e-130仅含1位有效数字,远小于38,因此可以精确存储为1e-130。

  • NUMBER(*)
    仅指定precision为*(即默认38),未指定scale,行为和NUMBER完全一致:属于动态浮点数存储,自动适配输入值的scale,有效位数不超38即可完整保留,所以1e-130能被正确存储。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:10:58