본문 바로가기
ORACLE

오라클 '제수가 0입니다' 오류 원인과 해결 방법

by samie 2025. 4. 2.
오라클 '제수가 0입니다' 오류 원인과 해결 방법

오라클 '제수가 0입니다' 오류 원인과 해결 방법

1. 오류 발생 원인

오라클에서 "제수가 0입니다" 오류(ORA-01476)는 숫자를 0으로 나누는 연산이 수행될 때 발생합니다.


SELECT 100 / 0 FROM dual;  -- ORA-01476: 제수가 0입니다 오류 발생
            

2. 해결 방법

다음과 같은 방법으로 오류를 방지할 수 있습니다.

1) NULLIF 함수 사용

NULLIF를 사용하면 제수가 0일 경우 NULL을 반환하여 오류를 방지할 수 있습니다.


SELECT 100 / NULLIF(0, 0) FROM dual;  -- NULL 반환 (오류 없음)
            

2) CASE 문 사용

CASE 문을 활용하여 제수가 0이면 특정 값을 반환하도록 처리할 수 있습니다.


SELECT CASE WHEN divisor = 0 THEN NULL ELSE 100 / divisor END FROM my_table;
            

3) DECODE 함수 사용

DECODE를 사용하여 제수가 0일 때 특정 값을 반환할 수도 있습니다.


SELECT DECODE(divisor, 0, NULL, 100 / divisor) FROM my_table;
            

3. 처리 예제

테이블을 생성하고 예제 데이터를 삽입한 후 오류를 방지하는 쿼리를 실행하는 방법을 살펴보겠습니다.


CREATE TABLE test_table (
    id NUMBER,
    numerator NUMBER,
    divisor NUMBER
);

INSERT INTO test_table VALUES (1, 100, 10);
INSERT INTO test_table VALUES (2, 200, 0);
INSERT INTO test_table VALUES (3, 300, 5);

-- 오류 방지 적용
SELECT id, numerator / NULLIF(divisor, 0) AS result FROM test_table;
            

4. 결론

오라클에서 "제수가 0입니다" 오류를 방지하려면 NULLIF, CASE, DECODE 같은 방법을 사용해야 합니다.