Oracle中Number(38,127)、Number、Number(*)、Number(*,127)有什么区别

问题描述 投票:0回答:1

Oracle使用Number来存储定点和浮点值,我们可以选择指定精度或小数位数的值。

我的理解是Number(38, 127)定义了一个只有小数部分的定点数,后三位可以用来存储浮点数。然而,例如,当我尝试为这四列插入值 1e-130 时,Number(38, 127) 和 Number(,127) 将其存储为 0,而 Number 和 Number() 将其存储为 1e- 130,这又和我之前的理解不一样了。

所以我想知道我的标题中描述的四个定义之间有什么区别?

database oracle numbers precision
1个回答
0
投票

Oracle 的

NUMBER
能够存储小至 1e-130 的值,但无论出于何种原因,它不允许您指定超过 127 的比例。

  • 因此,如果您不指定比例(
    NUMBER
    NUMBER(*)
    ),则隐式为 130,Oracle 可以存储 1e-130。
  • 如果您指定小数位数为 127(
    NUMBER(38, 127)
    NUMBER(*, 127)
    ),Oracle 无法存储 1e-130,而必须将其舍入为 0。

以下是 Oracle 文档:https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/Data-Types.html#GUID-9401BC04-81C4-4CD5-99E7-C5E25C83F608

这是一个小提琴:https://dbfiddle.uk/Dsavo4MD

© www.soinside.com 2019 - 2024. All rights reserved.