问题描述
我看过oracle docs,数据库中数据类型“数字”的范围是38,这是最大范围。
我用它搜索了一下,除了38是业力法则,守护天使...
您介意解释为什么数字范围是38吗?
谢谢!
解决方法
这是精度(与业力或天使无关)。
Documentation说数字的格式为NUMBER [ (p [,s]) ]
:
具有精度p和小数位数s的数字。精度p的范围可以是1到38。小数位数s的范围可以是-84到127。精度和小数位数都是十进制数字。 NUMBER值需要1到22个字节。
精度是数字中的位数。例如,数字123.45
有5
位数字,因此其精度为5
。
小数位数是小数点右边的位数;在此示例中,45
使2
位数字,因此小数位数为2
。
这意味着(如果我们假设数字看起来像那样)您创建的表将看起来像
create table (some_value NUMBER (5,2)); --> precision 5,scale 2
如果您违反精度,Oracle将引发错误。另一方面,您可以违反规模-在这种情况下,Oracle将舍入该值。