小编典典

Oracle中的“ UMBER”和“ UMBER(*,0)”是否相同?

sql

在Oracle文档中提到

NUMBER(精度,小数位数)

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

但是NUMBER(没有精度和小数位数)也接受浮点数(34.30),但是根据文档,如果未指定小数位数,则默认情况下应为零小数位数,因此应仅允许整数,对吗?

在另一个问题中,提到

默认精度为38,默认比例为零

因此NUMBERNUMBER(*,0)应该相等,但不相等。

我哪里错了?


阅读 198

收藏
2021-04-15

共1个答案

小编典典

小数位数的默认值不为零,其中没有任何值。因此,它可以接受之间的任何值-84 to 127。如果将其限制为零,则即使该值包含小数位值,它也不会接受任何精度

create table aaaaa
(
sno number(*,0),
sno1 number
);

user_tab_columns给你的你的精度和标度值

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>
2021-04-15