2012-09-26 1 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

이봐, 우리 모두가이 google, mate :) –

+2

반면에, 문자열이 아닌 숫자로 저장 하시겠습니까? 0으로 시작될 수 있으므로 dbase에서 가져 와서 숫자를 추가로 확인해야합니다. –

+1

일부 숫자 문자열은 숫자가 아닌 문자열로 저장되고 처리되어야합니다. –

답변

2

당신이 (20 20) 수에 대한 정밀 오류가 발생하는 이유 정밀도가 20이고 배율이 20 인 숫자를 만드는 것이므로 숫자는

00.000000000000000000에서 0.999999999999999999 사이입니다.

sqlfiddle에 따르면, number(13) 작품 (어쩌면 당신은 내가 varchar2(13 char) 아마 데이터 타입의 더 나은 선택이라고 @xavier에 동의하지만, 올바른 크기를 보장하기 위해 number(13, 0)를 지정해야합니다.

+0

감사합니다. 어떤 이유로', 0'이 필요했습니다 : \ – stackoverflowuser95

관련 문제