1

我对 oracle 很陌生,但我一直在课堂上学习它,最近我遇到了number数据类型。我已经阅读了有关比例和精度 (s,p) 的文档,但我仍然对该类型的正确使用不持肯定态度。

假设我想将百分比值存储为小数。小数点可以是 0 到 1 之间的任意值,并且小数点后最多可以有 3 个数字。

要存储的一些可能的小数可能包括:

.66
.553
1.00

如果我要创建这个专栏NUMBER(4,3),即使只有两个数字,它也会起作用吗?见下文

.22
.10
.35
etc...

简而言之,数字类型是否要求满足 EXACT 大小?例如。NUMBER(4,3) 是否绝对要求插入的数据是 4 个数字,其中 3 个在小数点后?

谢谢您的帮助!

4

1 回答 1

2

列的数据类型限制了可以存储的值的范围。但是他们没有做任何事情来强制特定的长度或精度。

就像您可以在VARCHAR2(100)列中存储单个字符或 NULL 一样,您可以存储小于 3 位精度和小于 4 位小数位数的数字。例如,值 0 和 6.1 对于NUMBER(4,3)列都是完全有效的。如果您插入的值的精度位数过多,则该值将静默四舍五入到列定义中指定的精度。

SQL> create table foo (
  2    col1 number(4,3)
  3  );

Table created.

SQL> insert into foo values( 9.999 );

1 row created.

SQL> insert into foo values (0);

1 row created.

SQL> insert into foo values( 6.1 );

1 row created.

SQL> insert into foo values( 1.2345 );

1 row created.

SQL> select * from foo;

      COL1
----------
     9.999
         0
       6.1
     1.235
于 2012-04-09T01:27:22.587 回答