기록하는 개발자

ORA-01476 : 제수가 0입니다 본문

DB/Oracle

ORA-01476 : 제수가 0입니다

gitseok 2024. 12. 10. 01:28

Oracle에서 나누기의 분모가 0일시 발생하는 오류
 
NULLIF를 사용해서 해결할 수 있다.


NULLIF

NULLIF(A,B) = A가 B와 같을시 NULL로 치환
A에 해당 분모의 값을 집어넣으면 되고 B는 다른 문자나 숫자로 변경 가능

(만약 A에  'gitseok'이 들어갔을때 NULL로 변경하려면 NULLIF(A,'gitseok') 이런식으로 사용)

-- SELECT #분자#/NULLIF(#분모#,0) FROM DUAL
-- 분자 = 200, 분모 = 0
SELECT 200/NULLIF(0,0) FROM DUAL
--  출력값 >>>>> NULL

0인 분모가 NULL으로 변경 오류가 발생하지 않는다.


NVL

하지만 분모가 NULL이 된다면 결과값은 항상 NULL이 되기 때문에 NVL을 통해 다시 0으로 변경해주어야한다.

-- NVL예시
SELECT NVL(A,'NULL입니다') FROM DUAL
-- A가 NULL일시 출력값 >>>>> 'NULL입니다'

-- SELECT NVL(#분자#/NULLIF(#분모#,0),#변경값#) FROM DUAL
-- 분자 = 200, 분모 = 0, NVL 
SELECT NVL(200/NULLIF(0,0),0) FROM DUAL
--  출력값 >>>>> 0

NULLIF를 통해서 0이 NULL로 변경되고 200/NULL = NULL이기 때문에 NVL(NULL,0)이 되어 0이 출력됨

'DB > Oracle' 카테고리의 다른 글

[Oracle] 맥북 오라클 설치  (0) 2025.01.16
Comments