在Oracle documentation中提到



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

another questions中提到



因此,NUMBERNUMBER(*,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/

10-16 07:35