Oracle DB_NULL함수

JW__1.7·2022년 8월 30일
0

DB 공부일지

목록 보기
13/27

NULL

아직 정의되지 않은 값 또는 배정이 안 된 상태이다.
빈 값(공백)이나 0과는 다른 값이므로 주의해야 한다.

  • NULL 값과 연산(+ - * /)을 해도 무조건 NULL이 나온다

NULL 처리 함수

NVL 함수

  • NVL(칼럼, 칼럼값이 NULL일 때 대신 사용할 값)
  • ISNULL(표현식1, 표현식2) 과 동일하게 사용한다.
    → 표현식 1의 결과값이 NULL이면 표현식2의 값을 출력한다.
    단, 표현식1과 표현식2의 결과 데이터 타입이 같아야 한다.

NAME이 없으면 '아무개', KOR, ENG, MATH가 없으면 0으로 조회하기

SELECT
       NVL(NAME, '아무개') AS STU_NAME
     , NVL(KOR, 0)
     , NVL(ENG, 0)
     , NVL(MATH, 0)
  FROM
       SAMPLE
 ORDER BY
       STU_NAME ASC;

이름과 총점을 조회하기

  • 이름이 없으면 '아무개', 점수가 없으면 0점 처리
  • 결과
    • 아무개 300
    • 영숙 200
    • 정수 200
    • 지영 200
SELECT 
       NVL(NAME, '아무개') AS 이름
     , NVL(KOR, 0) + NVL(ENG, 0) + NVL(MATH, 0) AS 총점
     , KOR + ENG + MATH
  FROM
       SAMPLE;

NVL2 함수

  • NVL2(칼럼, NULL이 아닐 때 사용할 값, NULL일 때 사용할 값)
SELECT
       NVL2(NAME, NAME || '님', '아무개')
     , NVL2(KOR, '응시', '결시')
     , NVL2(ENG, '응시', '결시')
     , NVL2(MATH, '응시', '결시')
  FROM
       SAMPLE;

NULLIF 함수

  • NULLIF(표현식1, 표현식2)
    → 표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식1을 리턴한다.
SELECT 
	   NAME
     , EMP_NO
     , MGR
     , NULLIF(MGR, 120)
FORM   EMPLOYYES ;

COALESCE 함수

  • COALESCE(표현식1, 표현식2, ...)
    → 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다.
    모든 표현식이 NULL이라면, NULL을 리턴한다.
SELECT 
	   NAME
     , COALESCE(COM, SAL)
FROM   EMPLOYYES ;

0개의 댓글