Notice
Recent Posts
Recent Comments
Link
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- javascript
- 환경번수
- 1773번
- boj
- subversion
- DBeaver
- docker
- 메뉴얼
- SVN
- putty
- jsonb select
- jenkins
- linux
- PostgreSQL
- 사용법
- bekjoon
- 제수가 0입니다
- rocky linux
- jaekjoon java
- 백준
- 자바
- 백준 java jaekjoon JAVA
- 백준 JAVA
- ora-01476
- Rocky Linux 9
- MAC
- baekjoon
- java
- Oracle
- install
Archives
기록하는 개발자
ORA-01476 : 제수가 0입니다 본문
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