네이버, 구글링하다가 이해가 안되서 여기서 질문 올립니다.
sqld 시험 준비하면서 기출 문제 푸는데 coalesce 함수가 정확히 이해가 안됩니다.
함수 기능은 null 이 아닌 첫 번째 값 도출이라고 나와있습니다.
문제는
col1 col2
100 100
null 60
null null
테이블이 나와있고
select coalesce(col1, col2*50, 50)
from tab1;
이렇게 나와있습니다.
수행 결과를 찾는 건데
첫번째는 100 두번째는 100x50 마지막은 50이라고 생각해서
100
5000
50
이 정답일 줄알았는데
100
3000
50
이 정답이더군요. 제가 어디를 잘못 이해하고 있는건가요?
읽어주셔서 감사합니다.
각 레코드별로 아래와 같이 판별됩니다. 오라클 매뉴얼에 coalesce 함수 동작 방식에 대해 설명이 있습니다.
https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions023.htm#SQLRF00617
100 100 -> coalesce(col1, col2*50, 50) -> case when col1 is not null then col1 -> 100 null 60 -> coalesce(col1, col2*50, 50) -> case when col1 is not null then col1 else coalesce (col2*50, 50) -> case when col2*50 is not null then col2*50 -> 60*50 = 3000 null null -> coalesce(col1, col2*50, 50) -> case when col1 is not null then col1 else coalesce (col2*50, 50) -> case when col2*50 is not null then col2*50 else 50 -> 50