我对oracle非常陌生,但我在课堂上一直在学习它,最近还接触到了number数据类型。我已经阅读了有关小数位数和精度(s,p)的文档,但我仍然不确定该类型的正确用法。
假设我想将百分比值存储为小数。小数可以是从0到1的任何数字,并且小数位后最多可以有3个数字。
要存储的一些可能的小数可能包括:
.66
.553
1.00如果我将列设置为NUMBER(4,3),那么即使只有两个数字,它也可以工作吗?见下文
.22
.10
.35
etc...简而言之,number类型是否要求满足确切的大小?例如:NUMBER(4,3)是否绝对要求插入的数据是4个数字,其中3个数字在小数点后?
谢谢你的帮助!
发布于 2012-04-09 09:27:23
列的数据类型限制了可以存储的值的范围。但是他们不做任何事情来强制特定的长度或精度。
就像您可以在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.235https://stackoverflow.com/questions/10067945
复制相似问题