본문 바로가기
IT/MYSQL

MYSQL - NULL 처리하기 3가지 방법(IFNULL, CASE, COALESCE)

by 꿀코 2023. 2. 27.
반응형

MYSQL에서 데이터를 조회하였을 때 결과 컬럼 값이 NULL로 조회될 경우 다음의 3가지 방법을 활용하여 대체값을 넣어 줄 수 있습니다. IFNULL, CASE, COALESCE 함수를 활용하여 NULL 값을 처리할 수 있고, 오라클의 NVL, NVL2 함수와 비슷한 역할을 합니다.

 

 

1. IFNULL

IFNULL은 NULL 값으로 RETURN 된 값을 다른 값으로 대체하는 함수입니다.

 

 1) 문법

  • SELECT IFNULL(대상 컬럼, '대체값') FROM 테이블명;

 2) 예시

# SALARY 테이블에서 SALARY 값이 0일 경우 하이픈(-)으로 대체
SELECT IFNULL(SALARY, '-') FROM SALARY;

 

※ IF문?

IF문으로도 NULL 체크 조건을 주어 NULL 값을 처리할 수 있습니다.

# IF문으로 NULL 값 처리하기 -> IF(컬럼 IS NULL, 'NULL 일 경우 값', 'NULL이 아닐 경우 값')
SELECT IF(SALARY IS NULL, '-', SALARY) FROM SALARY;

 

 

2. CASE

CASE는 WHEN 조건에 따라 값을 처리하는 함수로 JAVA나 C, PYTHON에서 사용하는 IF ~ ELSE 문과 같은 역할을 하는 함수입니다.

 

 1) 문법

  • SELECT CASE
             WHEN 조건1 THEN 결과1
             WHEN 조건2 THEN 결과2
             ...
             ELSE 조건에 맞는 경우 없을 때 결과
           END
    FROM 테이블명;

 2) 예시

# SALARY가 NULL일 경우 '-' 반환, 다른 경우 SALARY 값 반환
SELECT CASE
         WHEN SALARY IS NULL THEN '-'
         ELSE SALARY
       END
FROM SALARY;

 

 

3. COALESCE

COALESCE는 파라미터(PARAMETER) 중 NULL 값이 아닌 첫 파라미터를 반환합니다. 특히 COALESCE는 XOR 관계를 가질 경우 활용도가 높고, MYSQL에서 WITH ROLLUP과 사용할 경우 시너지가 뛰어납니다.

 

 1) 문법

  • SELECT COALESCE(컬럼1, 컬럼2, 컬럼3, ...) FROM 테이블명;

 2) 이해하기

SELECT COALESCE(NULL, 1, 2);
-> 1
SELECT COALESCE(3, NULL);
-> 3
SELECT COALESCE(NULL, NULL);
-> NULL

 3) 예시

# WITH ROLLUP으로 합계 계산 후, NULL 처리되는 DEPT 컬럼을 '합계'로 처리
SELECT COALESCE(DEPT, '합계') AS DEPT,
       SUM(SALARY) 
FROM SALARY GROUP BY DEPT WITH ROLLUP;

 

반응형

댓글