728x90
반응형
ORA-01476: 제수가 0 입니다. (divisor is equal to zero) 해결방법
발생 원인
나누기 연산 시 0으로 나누려고 할 때 발생하였습니다.
"분자/분모"라면 분모가 0일 때 발생.
테스트 케이스
SELECT 10/10 FROM DUAL; -- 1
SELECT 10/0 FROM DUAL; -- ORA-01476 발생!
해결 방법
DECODE와 NVL 함수를 활용하여 해결하실 수 있습니다.
2가지 방법을 기록합니다. 더 다양한 방법은 댓글로 공유해주시면 감사하겠습니다.
1. DECODE를 통해 분모가 0이라면 바로 0 반환, 그렇지 않다면 연산 수행
2. 분모가 0이라면 NULL로 변경 후 연산 수행 → 분자/NULL = NULL 반환 → NVL로 NULL을 0으로 치환
-- 1번 방법 쿼리
SELECT DECODE(분모, 0, 0, 분자/분모) FROM DUAL;
-- 2번 방법 쿼리
SELECT NVL(분자 / DECODE(분모, 0, NULL, 분모), 0) FROM DUAL;
분자 및 분모 자리엔 값 또는 컬럼명이 들어갈 수 있습니다.
이 외에도 NULLIF, CASE~WHEN 등을 활용하여 해결하는 방법도 있다고 합니다.
적절하게 사용하면 좋을 것 같습니다.
728x90
반응형
'Oracle' 카테고리의 다른 글
[Oracle] ORA-00001 : 유일성(무결성) 제약조건에 위배됩니다 (0) | 2021.08.07 |
---|---|
[Oracle] ORA-08002 시퀀스 SEQ.currval 은 이 세션에서는 정의되어 있지 않습니다 (0) | 2021.08.07 |
[Oracle] ORA-00947 : 값의 수가 충분하지 않습니다. (0) | 2021.08.01 |
[Oracle] 오라클 에러 발생 시 해결방법 (2) | 2021.08.01 |
[Oracle] ORA-01861 : 리터럴이 형식 문자열과 일치하지 않음 (0) | 2021.07.31 |
댓글