oracle資料值型資料改精度測試

guyuanli發表於2010-08-26

今天,同事問我一個問題,一個欄位定義原先是NUMBER(15,2),並且裡面的資料都是整數,現在想改成NUMBER
做了一個測試:
SQL> desc b
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
COL1 NUMBER(15,2) Y

SQL> select * from b;

[@more@]

COL1
-----------------

SQL> insert into b values(12);

1 row inserted

SQL> insert into b values(11.11);

1 row inserted

SQL> commit;

Commit complete

SQL> select * from b
2 ;

COL1
-----------------
12.00
11.11

SQL> alter table B modify COL1 NUMBER;

Table altered

SQL> select * from b;

COL1
----------
12
11.11

SQL>

可以看出,精度從小往大改是可以改的,以前是整數的改過來去掉小數位,以前是小數的,改過來之後還是小數

SQL> desc b
Name Type Nullable Default Comments
---- ------ -------- ------- --------
COL1 NUMBER Y

SQL> alter table B modify COL1 NUMBER(15,2);

alter table B modify COL1 NUMBER(15,2)

ORA-01440: 要減小精度或標度, 則要修改的列必須為空

SQL>

可以看出要使精度從大往小改ORACLE是不允許的

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7490392/viewspace-1037432/,如需轉載,請註明出處,否則將追究法律責任。

相關文章