본문 바로가기

ETC

[Oracle] 제수가 0입니다. 문제 해결

SELECT 100 / 0 FROM DUAL

위처럼 분모가 0이 되는 상황에서 쿼리문을 실행하면 다음과 같은 에러가 뜬다.


ORA-01476: 제수가 0 입니다.

당연한 거겠지만 동작하지 않는다. 그럼 어떻게 해결해야할까?

다음과 같이 사용하면 된다.


SELECT NVL( 100 / NULLIF( 0, 0 ), 0 ) FROM DUAL

NULLIF를 사용하여 분모가 0이 될 때 NULL 변환하고, 산술처리를 넘긴 다음에 NVL을 이용하여 0으로 변환하여 사용하면 된다.

아래는 NULLIF와 NVL의 사용법이다.


NULLIF( expr1, expr2 )

expr1과 expr2의 값이 같을 때 NULL로 변환한다.


NVL( expr1, expr2 )

expr1의 값이 NULL일 때 expr2으로 변환한다.