Develop/CS
[Oracle] ORA-01476: 제수가 0 입니다.
연로그
2021. 8. 9. 11:23
반응형
📌 ORA-01476: 제수가 0 입니다. 에러
❓ 제수란?
나눗셈에서 어떤 수를 나누는 수
ex: '12 나누기 6은 2' 에서 제수는 6
💡 원인 발견
수학에서 어떤 수를 0으로 나누는 것은 불가능하다.
SELECT SUM(컬럼1) / COUNT(컬럼2) 식으로 되어있다고 가정할때, COUNT(컬럼2) 값이 0일 경우 위와 같은 에러가 발생한다.
🎉 해결 방법
NVL(), NULLIF(), DECODE()와 같은 함수를 사용해 0일 경우를 다르게 처리하면 된다.
몇 가지 예시를 살펴보자.
a는 10, b는 0일 경우에 a/b 결과를 구하는 SQL문이다.
10을 0으로 나누게 되므로 제수가 0이라는 에러가 발생할 것이다.
SELECT a/b
FROM (SELECT 10 AS a, 2 AS b FROM DUAL);
#ex01 NVL()과 NULLIF() 사용하기
SELECT NVL(a/NULLIF(b,0),1)
FROM (SELECT 10 AS a, 2 AS b FROM DUAL);
NULLIF()를 통해 b가 0이면 null, 그렇지 않으면 b로 변환.
NVL()를 통해 null 값이 들어오면 1 반환.
#ex02 NVL()과 DEOCDE() 사용하기
SELECT NVL(a/DECODE(b,0,null,b),1)
FROM (SELECT 10 AS a, 0 AS b FROM DUAL);
DECODE()를 통해 b가 0이면 null, 그렇지 않으면 b로 변환.
NVL()를 통해 null 값이 들어오면 1 반환.
참고
제수 뜻: https://ko.dict.naver.com/#/entry/koko/19c3bdd111c149a1890a8cbb9b4a359a
에러 해결 방법: http://blog.yes24.com/blog/blogMain.aspx?blogid=metalzang&artSeqNo=1785694
반응형