본문 바로가기

Database&WAS/Oracle

[Oracle] COALESCE() 함수

- 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'

'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