sal(월급)은 숫자형 데이터 컬럼인데, "3000"을 문자형으로 비교한다. sal = '3000'으로 잘 못 비교해 오류가 날 것 같지만,
오라클이 알아서 '숫자형'='문자형' 을 '숫자형'='숫자형'으로 암시적 형 변환을 해여 비교해 실행해줘 결과가 나타난다.
1. 이름과 커미션 출력하는데, 커미션이 NULL인 사원들은 0으로 같이 출력하기
select 이름, 커미션
from emp
null값인 사원을 0으로 어떻게 출력해야하나?
comm(커미션)이 0이 아닌 사원들은 그대로 출력, 커미션이 NULL인 사원들은 NULL 대신 0이 출력된다
실제 데이터가 바뀌는것이 아닌, 출력값만 0으로 출력되는 것이다.
다른 값 데이터를 넣느것이 필요한 이유는 NULL값이 들어가게 되면 NULL 값이 포함된 컬럼도 NULL로 출력되기 때문이다.
ex)
NULL을 0으로 치환하여 준다면,
커미션을 0으로 치환해 출력이 가능하다.
NVL2 함수를 이용하면, 커미션이 0이 아닌 사원들은 sal+comm출력, NULL인 사원들은 sal을 출력할 수 있다
ex)
●NVL2
NVL2 함수는 첫번째 인수가 NULL이 아니면 두번째 인수를 반환하고, 첫번째 인수가 NULL이면 세번째 인수를 반환한다
NVL2( expr1, expr2, exp3) 의 형식
- expr1: 비교할 값
- expr2: expr1이 NULL이 아닌 경우 반환
- expr3: expr1이 NULL인 경우 반환