2012-09-26 14 views
0

爲什麼我會得到一個精度錯誤?在OracleDB中存儲ISBN會導致精度錯誤?

INSERT INTO ISBN_LIST (ISBN) VALUES (9780261102354); 

鑑於表:

CREATE TABLE ISBN_LIST ( 
    ISBN NUMBER (20,20) NOT NULL -- NUMBER(13) also didn't work 
); 
ALTER TABLE ISBN_LIST 
    ADD CONSTRAINT PK_ISBN_LIST PRIMARY KEY (ISBN); 

[如果你認識到ISBN積分!]

+1

嘿,我們都有谷歌,隊友:) –

+2

另一方面,你確定要將它存儲爲一個數字,而不是一個字符串?它可能以0開頭,因此從dbase中取數據後需要額外驗證數字的長度以便正確顯示它們。 –

+1

某些數字字符串應該存儲並視爲字符串而不是數字。 –

回答

2

爲什麼你要的號碼(20,20)精度誤差的原因是因爲您正在創建一個精度爲20,比例爲20的數字,這意味着數字:

介於0.00000000000000000000和0.99999999999999999999之間。

根據這一sqlfiddlenumber(13)作品(也許你需要指定number(13, 0)以確保正確的尺度,但我會@xavier同意,varchar2(13 char)可能是數據類型的一個更好的選擇。

+0

謝謝,因爲某種原因需要',0':\ – stackoverflowuser95