在OracleDB中存储ISBN会产生精度错误吗?

时间:2012-09-26 09:19:15

标签: oracle types oracle11g precision

为什么我会收到精确错误?

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 个答案:

答案 0 :(得分:2)

您为数字(20,20)获得精度错误的原因是因为您正在创建一个精度为20且比例为20的数字,这意味着数字:

介于0.00000000000000000000和0.99999999999999999999之间。

根据此sqlfiddlenumber(13)有效(可能您需要指定number(13, 0)以确保正确的比例,但我同意@xavier,varchar2(13 char)是可能是数据类型的更好选择。