我对oracle很新,但我在课堂上一直在学习它,最近我遇到了number
数据类型。我已经阅读了有关比例和精度(s,p)的文档,但我对该类型的正确用法仍不乐观。
假设我想将百分比值存储为小数。小数可以是0到1之间的任何值,小数点后最多可以包含3个数字。
要存储的一些可能的小数可能包括:
.66
.553
1.00
如果我要使列NUMBER(4,3)
能够工作,即使只有两个数字?见下文
.22
.10
.35
etc...
简而言之,数字类型是否要求符合EXACT尺寸?例如。 NUMBER(4,3)绝对要求插入的数据是4个数字,其中3个数字落在小数点后?
感谢您的帮助!
答案 0 :(得分: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