- COALESCE(a1, a2, a3, a4,... aN)
* a1 부터 aN까지 첫음으로 null 이 아닌 값을 리턴
* 모든 값이 null 이면 null 리턴
ex) sale1/2/3 중에 순서대로 비교해서 null 이 아닌 첫번째 값을 가져오고 모두 null이면 0을 리턴
SELECT COALESCE(sale1,sale2,sale3,0)
FROM product
WHERE id = :key1
DECODE로 쓰면...
DECODE(sale1,NULL, DECODE(sale2,NULL,DECODE(sale3,NULL,0,sale3),sale2),sale1)
NVL 쓰면...
NVL(COALESCE(sale1,sale2,sale3),0)
또는
NVL(sale1,NVL(sale2,NVL(sale3,0)))
...
* 비교하는 데이터 형은 일치 시켜야함, 아니면
'ORA-00932 데이터 유형이 일치하지 않습니다' 와 같이 에러가 나옴
ex) 'a1' 이 숫자형일 경우
- COALESCE(a1, 'none') --> 'error'
- COALESCE(TO_CHAR(a1), 'none') --> 'OK'
ex) 'b1' 이 문자형일 경우
- COALESCE(b1, 0) --> 'error'
- COALESCE(b1, '0') --> 'OK'
* a1 부터 aN까지 첫음으로 null 이 아닌 값을 리턴
* 모든 값이 null 이면 null 리턴
ex) sale1/2/3 중에 순서대로 비교해서 null 이 아닌 첫번째 값을 가져오고 모두 null이면 0을 리턴
SELECT COALESCE(sale1,sale2,sale3,0)
FROM product
WHERE id = :key1
DECODE로 쓰면...
DECODE(sale1,NULL, DECODE(sale2,NULL,DECODE(sale3,NULL,0,sale3),sale2),sale1)
NVL 쓰면...
NVL(COALESCE(sale1,sale2,sale3),0)
또는
NVL(sale1,NVL(sale2,NVL(sale3,0)))
...
* 비교하는 데이터 형은 일치 시켜야함, 아니면
'ORA-00932 데이터 유형이 일치하지 않습니다' 와 같이 에러가 나옴
ex) 'a1' 이 숫자형일 경우
- COALESCE(a1, 'none') --> 'error'
- COALESCE(TO_CHAR(a1), 'none') --> 'OK'
ex) 'b1' 이 문자형일 경우
- COALESCE(b1, 0) --> 'error'
- COALESCE(b1, '0') --> 'OK'
'Database&WAS > Oracle' 카테고리의 다른 글
WFMLRSVCApp.ear 파일을 찾을 수 없는 오류 (0) | 2012.10.23 |
---|---|
Oracle 11g Client 제거 - Windows 7(x64) (1) | 2011.09.28 |
[Oracle] NULLIF() 함수 (0) | 2011.06.27 |
[Oracle] SUM() 함수 (0) | 2011.06.23 |
HINTs #1 - [Oracle] (0) | 2011.03.16 |