일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- aspnet
- 윈도우
- 엑셀
- c#
- MS
- MSSQL
- DataGrid
- CONVERT()
- windows
- 윈폼
- ASP
- 태그를 입력해 주세요.
- 단축키
- Excel
- oracle
- javascript
- microsoft
- Winform
- replace()
- attr()
- 비주얼스튜디오
- 리포팅서비스
- 이클립스
- 마이크로소프트
- IIS
- 오라클
- SSRS
- jQuery
- 자바스크립트
- 프로시저
- Today
- Total
DJ메탈짱™의 Free Style
[ORACLE] ORA-01476: 제수가 0 입니다. 에러 발생하는 경우 대처방법. 본문
|
|
나누기 연산 하는 경우거나 평균값을 구하는 경우에 분모 값이 0 인 상태에서 연산을 하면 에러(ORA-01476)가 발생하는데...
이 경우 아래와 같은 예제를 활용하시면 해결하실 수 있습니다.
-- ORA-01476: 제수가 0 입니다.
-- 나누기 연산을 하여 값을 구하는 경우
select a/b result
from (select 100 a, 0 b from dual)
-- ORA-01476: 제수가 0 입니다.
-- 두개의 값에 따라 평균값을 구하는 경우
select avg(a/b) result
from (select 100 a, 0 b from dual)
-- NULLIF 함수를 사용하여 처리
-- 분모가 0 인 경우에 결과값은 0
select nvl(avg(a/nullif(b,0)),0) result
from (select 100 a, 0 b from dual)
-- 결과값 : 2, 0.5
select avg(200/100) result from dual
select avg(100/200) result from dual
-- DECODE 함수를 사용하여 처리.
select decode(b,0,0,null,0, a/b) result
from (select 100 a, 0 b from dual)
-- ORA-01476: 제수가 0 입니다.
-- AVG 함수를 사용하는 경우에는 분자/분모 모두 "0"이 아니여야 하므로
-- 아래와 같이 DECODE, NULLIF 함수를 사용하면 해결할 수 있음.
select decode(sum(b),0,0,null,0, avg(a/b)) result
from (
select 1001 a, 16 b from dual union all
select 2002 a, 10 b from dual
)
-- 131.38125 결과값
-- ROUND 함수로 인한 결과값 반올림(131.4)
select ROUND(decode(sum(b),0,0,null,0, avg(a/b)),1) result
from (
select 1001 a, 16 b from dual union all
select 2002 a, 10 b from dual
)
-- 131.38125 결과값
-- 지정한 소수점 단위로 절삭한다.(131.3)
select trunc(decode(sum(b),0,0,null,0, avg(a/b)),1) result
from (
select 1001 a, 16 b from dual union all
select 2002 a, 10 b from dual
)
'일(job) > DBMS' 카테고리의 다른 글
[ORACLE] Logical Recovery (복원) #백업 (0) | 2016.01.18 |
---|---|
[ORACLE] Logical Backup (백업) #복원 (0) | 2016.01.18 |
[ORACLE] 컴퓨터 이름이 변경되는 경우 TNS 리스너 접속이 안되는 경우 #오라클10G (0) | 2016.01.18 |
[ORACLE] ORA-01722: 수치가 부적합합니다. (0) | 2016.01.18 |
[ORACLE] ORA-00947: 값의 수가 충분하지 않습니다. 오류 발생 원인 (0) | 2016.01.18 |