Oracle使用Number来存储定点和浮点值,我们可以选择指定精度或小数位数的值。
我的理解是Number(38, 127)定义了一个只有小数部分的定点数,后三位可以用来存储浮点数。然而,例如,当我尝试为这四列插入值 1e-130 时,Number(38, 127) 和 Number(,127) 将其存储为 0,而 Number 和 Number() 将其存储为 1e- 130,这又和我之前的理解不一样了。
所以我想知道我的标题中描述的四个定义之间有什么区别?
Oracle 的
NUMBER
能够存储小至 1e-130 的值,但无论出于何种原因,它不允许您指定超过 127 的比例。
NUMBER
、NUMBER(*)
),则隐式为 130,Oracle 可以存储 1e-130。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