값이 NULL일 경우 다른 값으로 출력해주는 함수들을 소개한다
아래는 설명에 쓰일 테이블입니다
NAME | SALARY |
철수 | 4000 |
영희 | 3500 |
훈이 | NULL |
Oracle - NVL, NVL2
ORACLE에서는 NVL / NVL2 함수를 사용합니다
NVL(EXPR1, EXPR2) - EXPR1이 NULL이면 EXPR2의 값을 NULL이 아니면 EXPR1의 값 출력
SELECT NAME, NVL(SALARY, 'NO PAY') AS SALARY
--> SALARY가 NULL이면 'NO PAY' 아니면 SALARY 출력
NAME | SALARY |
철수 | 4000 |
영희 | 3500 |
훈이 | NO PAY |
위 결과가 출력됩니다 어렵지 않죠??
NVL2(EXPR1, EXPR2, EXPR3) - EXPR1이 NULL이 아니면 EXPR2의 값을 NULL이면 EXPR3의 값 출력
SELECT NAME, NVL2(SALARY, 'PAY', 'NO PAY')
--> SALARY가 NULL이 아니면 'PAY' NULL이면 'NO PAY' 출력
NAME | SALARY |
철수 | PAY |
영희 | PAY |
훈이 | NO PAY |
위 결과 출력됩니다~
MySQL - IFNULL, MSSQL - ISNULL
MYSQL과 MSSQL에도 NVL함수와 똑같은 기능에 이름만 다른 함수들이 있습니다
두 함수 모두 다 NVL과 똑같이 EXPR1이 NULL 이면 EXPR2의 값을 NULL 이 아니면 EXPR1의 값 출력합니다
MYSQL - IFNULL( EXPR1, EXPR2 )
MSSQL - ISNULL( EXPR1, EXPR2 )
똑같으니 굳이 사용하는 부분을 보이지는 않겠습니다
NVL예제에서 NVL대신에 위의 함수들을 넣기만 하면 됩니다~!
COALESCE - Oracle, MSSQL, MySQL 공통
ORACLE / MSSQL / MYSQL 공통으로 쓰는 COALESCE 함수 도 있습니다
COALESCE( EXPR1, EXPR2, EXPR3...) - 가장 앞에 있는 EXPR 값이 NULL이 아닌 것을 반환한다
아래 테이블을 통해 예제를 진행해 보겠습니다.
NAME | SALARY | POINT |
철수 | 4000 | NULL |
영희 | NULL | 8000 |
훈이 | NULL | NULL |
SELECT NAME, COLEASCE(SALARY, POINT, 'NOTHING') AS 'SALARY OR POINT'
--> SALARY출력 SALARY가 NULL 이면 POINT출력 POINT도 NULL이면 'NOTHING'출력
NAME | SALARY OR POINT |
철수 | 4000 |
영희 | 8000 |
훈이 | NOTHING |
COALESCE는 몰라도 위의 함수들로 구현 가능해서 꼭 필요한 건 아니지만
여러 개 옵션(2개 이상) 중 NULL 아닌 것의 출력을 요한다면 유용하게 쓸 수 있을 것 같습니다
이상으로 포스팅 마치겠습니다
도움이 되셨다면 공감 버튼 부탁드립니다~