在Oracle documentation中提到
但是NUMBER
(没有精度和小数位数)也接受浮点数(34.30),但是根据文档,如果未指定scale,则默认情况下应为零小数位数,因此应仅允许整数,对吗?
在another questions中提到
因此,NUMBER
和NUMBER(*,0)
应该相等,但不相等。
我哪里错了?
最佳答案
小数位数的默认值不为零,其中没有任何值。因此,它可以接受-84 to 127
之间的任何值。如果将其限制为零,则即使该值包含小数位值,它也不会接受任何精度
create table aaaaa
(
sno number(*,0),
sno1 number
);
user_tab_columns
将为您提供精度和小数位数的值(value)SQL> select column_name,data_precision,data_scale from user_tab_columns where ta
ble_name = 'AAAAA';
COLUMN_NAME DATA_PRECISION DATA_SCALE
------------------------------ -------------- ----------
SNO 0
SNO1
SQL>
请找到以下工作方式
SQL> select * from aaaaa;
no rows selected
SQL> insert into aaaaa values (123.123123,123123.21344);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from aaaaa;
SNO SNO1
---------- ----------
123 123123.213
SQL>
关于sql - Oracle中的 "NUMBER"和 "NUMBER(*,0)"是否相同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28207708/