본문 바로가기
SQL

[MySQL] MySQL NULL 처리하기 (IFNULL, COALESCE, CASE, IF...)

by Echung 2024. 1. 30.

MySQL에서 NULL 처리 방법에서는 IFNULL(), COALESCE(), CASE 문, IF문을 사용해서 NULL을 처리할 수 있습니다.

IFNULL()


IFNULL 함수는 해당 Column의 값이 NULL을 반환할 때, 다른 값으로 출력할 수 있도록 하는 함수입니다. MySQL의 IFNULL 함수는 Oracle 에서는 NVL(), SQL서버에서는 ISNULL()함수와 같습니다.

기본 구조

SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명;

 Ex)

# TLNO 가 NULL이면 "NONE"을 반환하는 코드입니다.
SELECT PT_NAME, IFNULL(TLNO, "NONE") AS TLNO
FROM PATIENT
결과물

 

COALESCE()


COALESCE 함수는 목록에서 NULL이 아닌 값을 반환하는 함수입니다.

기본 구조

SELECT COALESCE(Column1이름, Column2이름, Column3이름) FROM 테이블명;

Ex)

SELECT
PT_NAME,
COALESCE(TLNO, NULL, "TEST", "NONE") AS TLNO
FROM
PATIENT
결과물

CASE 문 활용


CASE 함수는 CASE조건을 통과하고 첫 번째 조건이 충족될 때 값을 반환합니다. (예: if-then-else문). 따라서 조건이 true이면 읽기를 중지하고 결과를 반환합니다. 조건이 참이 아니면 ELSE절의 값을 반환합니다.

기본 구조

SELECT
CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result
END AS RESULT
FROM 테이블명;

Ex)

SELECT
  PT_NAME,
  CASE
    WHEN TLNO IS NULL THEN 'NONE'
    ELSE TLNO
  END AS TLNO
FROM
  PATIENT;
결과물

IF 문 활용


IF 함수는 조건식이 참일때와 참이 아닐때를 결과를 반환해주는 함수 입니다.

기본 구조

SELECT IF(column IS NULL, 'No value', column) FROM 테이블명;

Ex)

SELECT
PT_NAME,
IF(TLNO IS NULL, "NONE", TLNO) AS TLNO
FROM
PATIENT
결과물

 

REPERENCE


https://itwiki.kr/w/MySQL_IFNULL_%ED%95%A8%EC%88%98

https://ko.w3hmong.com/sql/func_mysql_coalesce.htm

반응형