首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oracle中数字的默认精度和小数位数是多少?

Oracle中数字的默认精度和小数位数是多少?
EN

Stack Overflow用户
提问于 2009-02-27 01:22:51
回答 5查看 202K关注 0票数 79

在Oracle中创建NUMBER类型的列时,可以选择不指定精度或小数位数。如果您不指定这些默认值,它们会做什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-02-27 02:18:42

数字(精度,小数位数)

如果未指定精度,则列按给定的方式存储值。如果未指定比例,则比例为零。

有关更多信息,请访问:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

票数 46
EN

Stack Overflow用户

发布于 2009-02-27 01:37:02

我相信默认精度是38,默认小数位数是0。但是,此列的实例的实际大小是动态的。它将根据需要占用尽可能多的空间来存储值,或最多21个字节。

票数 14
EN

Stack Overflow用户

发布于 2009-03-02 17:34:53

Oracle按以下方式存储数字:1 byte表示幂,1 byte表示第一个有效数字(即分隔符之前的一个),其余数字表示其他数字。

这里的digits指的是centesimal digits (即base 100)

代码语言:javascript
复制
SQL> INSERT INTO t_numtest VALUES (LPAD('9', 125, '9'))
  2  /

1 row inserted

SQL> INSERT INTO t_numtest VALUES (LPAD('7', 125, '7'))
  2  /

1 row inserted

SQL> INSERT INTO t_numtest VALUES (LPAD('9', 126, '9'))
  2  /

INSERT INTO t_numtest VALUES (LPAD('9', 126, '9'))

ORA-01426: numeric overflow

SQL> SELECT DUMP(num) FROM t_numtest;

DUMP(NUM)
--------------------------------------------------------------------------------
Typ=2 Len=2: 255,11
Typ=2 Len=21: 255,8,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79

正如我们可以看到的,这里最大的数字是7.(7) * 10^124,他有19个百分位数来表示精度,或38个小数位数。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/593197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档