728x90
쿼리를 짜다가 ORA-01476: divisor is equal to zero 에러가 발생했다.
에러가 발생한 이유는 제수가 0이기 때문이다.
즉, 분모가 0이여서 발생하는 에러이다. 분모에는 0이 올 수 없다.
운영 DB로 넘어가기 전 개발 DB에서 클렌징을 하고 다시 TEST를 진행하면서
분모가 0인 경우가 발생하여 위 에러를 마주했다..
데이터가 많이 항상 분모는 0이 아닐 거라 생각하고 쿼리를 짜서 그랬던 것 같다.
본론으로 돌아가서,
ORA-01476:divisor is equal to zero 에러 해결법은
분모 값이 0이 온다면 CASE ~ WHEN ~ THEN문 및 NVL(), COALESCE() 이용하여 해결할 수 있다.
* CASE ~ WHEN ~ THEN문 및 NVL() 사용
SELECT CASE WHEN NVL(분모,0) > 0 THEN 연산식
ELSE 0 END AS 결과
FROM dual;
: 분모가 0이 아닐때만 연산식을 수행하고 아니면 0을 출력하는 쿼리.
* COALESCE()
: 사용 방법은 다음 포스팅 참고.
2023.04.01 - [Database/SQL] - [SQL] COALESCE() 함수 NULL 변환
통계적이거나 수치를 계산하는 쿼리를 작성할 때는
위 방법을 사용하여 분모가 0인 경우도 유의하여 짜야겠다 -!! :D
728x90
반응형
'DB > Oracle' 카테고리의 다른 글
[Oracle] LAG, LEAD - 이전 로우, 이후 로우 값 반환 (1) | 2023.07.05 |
---|---|
[Oracle] PIVOT 함수 사용법 (행을 열로 변환) (0) | 2021.03.12 |
[Oracle] CASE문 - CASE WHEN 표현식 사용법 (0) | 2021.02.19 |
[Oracle] 순위 매기는 함수 RANK(), DENSE_RANK(), ROW_NUMBER() 비교 (0) | 2021.02.18 |
[Oracle] WITH절 사용법 (0) | 2021.02.18 |
댓글