[SQL] NULL 관련 함수 - NVL, NVL2, NULLIF, COALESCE

정석기·2024년 1월 30일

SQL

목록 보기
1/4

📒 NVL(표현식1, 표현식2)

: 표현식1의 결과값이 NULL이면 표현식2의 값을 출력

  • 표현식1, 표현식2의 타입은 무조건 같아야 함. 틀리다면 ERROR 발생
  • EX)표현식1은 숫자고, 표현식2는 문자라면?
    -> 표현식1을 TO_CHAR해서 문자열로 변환한다.

📌 예제

SELECT NVL(COMMISSION_PCT, 0) FROM HR.EMPLOYEES;

-> HR.EMPLOYEES 테이블에서 COMMISSION_PCT의 데이터가 NULL인 곳은 0으로 출력한다.

📒 NVL2(표현식1, 표현식2, 표현식3)

: 표현식1의 컬럼이 NULL이 아니면 표현식2를 출력, NULL이면 표현식 3을 출력

📌 예제

SELECT NVL2(COMMISSION_PCT, 'Has Commission', No Commission') FROM HR.EMPLOYEES;

-> HR.EMPLOYEES 테이블에서 COMMISSION_PCT의 데이터 값이 NULL이 아니면 'Has Commission'을 출력하고, NULL이면 'No Commission'을 출력

📒 NULLIF(표현식1, 표현식2)

: 표현식1, 표현식2의 값이 같으면 NULL을, 같지 않으면 표현식1을 출력

📌 예제

SELECT NVL2(COMMISSION_PCT, 0) FROM HR.EMPLOYEES;

-> HR.EMPLOYEES 테이블에서 COMMISSION_PCT 값이 0이면 NULL을, 같지 않으면 COMMISSION_PCT의 값을 출력

📒 COALESCE(표현식1, 표현식2,...표현식N)

: 주어진 인자들 중에서 첫번째로 나타나는 'NULL'이 아닌 값을 반환.
: 만약, 모든 인자가 'NULL'이라면 'NULL'을 반환.

📌 예제

SELECT COALESCE(COMMISSION_PCT, MANAGER_ID, 'No Additional Information') FROM HR.EMPLOYEES;
  • COMMISSION_PCT가 NULL이 아니면 COMMISSION_PCT의 값을 반환.
  • COMMISSION_PCT가 NULL이고 MANAGER_ID가 NULL이 아니면 MANAGER_ID의 값을 반환.
  • COMMISSION_PCT와 MANAGER_ID 모두 NULL이라면 'No Additional Information'을 반환.


너무 헷갈리는데 외워야한다....😭😭

profile
의료IT공학과 졸업 / 석기의 코딩일기🐾

0개의 댓글