본문 바로가기
Oracle

[Oracle] ORA-01476 : 제수가 0 입니다(divisor is equal to zero)

by 상후 2021. 7. 31.
728x90
반응형

ORA-01476: 제수가 0 입니다. (divisor is equal to zero) 해결방법

발생 원인
나누기 연산 시 0으로 나누려고 할 때 발생하였습니다.
"분자/분모"라면 분모가 0일 때 발생.
테스트 케이스

 

SELECT 10/10 FROM DUAL;		-- 1
SELECT 10/0 FROM DUAL;		-- ORA-01476 발생!

 

해결 방법
DECODENVL 함수를 활용하여 해결하실 수 있습니다.
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
반응형

댓글