Database/SQL

[MySQL] MySQL NULL 처리 - IFNULL, CASE, COALESCE

Ella_K 2022. 11. 21. 19:47

https://velog.io/@gillog/DB-MySQL-NULL-%EC%B2%98%EB%A6%ACIFNULL-CASE-COALESCE

 

[DB] MySQL NULL 처리(IFNULL, CASE, COALESCE)

MySQL에서 Column의 값이 Null인 경우를 처리해주는 함수들은 IFNULL, CASE, COALESCE과 같은 함수들이 있다.Orcale의 NVL()과 비슷한 기능을 한다.해당 Column의 값이 NULL을 반환할 때, 다른 값으로 출력할 수 있

velog.io

 

IFNULL

해당 Column의 값이 NULL을 반환할 때, 다른 값으로 출력 할 수 있도록 하는 함수

📌 IFNULL

SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명;
-- NAME Column이 NULL인 경우 "No name"을 출력, NULL이 아닌 경우 NAME Column을 출력
SELECT IFNULL(NAME, "No name") as NAME
FROM ANIMAL_INS

 

📌 IF

IF, IS NULL 조건으로 IFNULL 구현 가능

-- NAME Column이 NULL이 True인 경우 "No name"을, False인 경우는 NAME Column을 출력
SELECT IF(IS NULL(NAME), "No name", NAME) as NAME
FROM ANIMAL_INS

 

CASE

WHEN에서 해당 Column 값을 조건식을 통해 True, False를 판단한다. THEN은 조건식이 TRUE일 때 실행하는 식이 온다. 조건에 맞게 Column 값을 변환할 수 있다.

CASE 
    WHEN 조건식1 THEN 식1
    WHEN 조건식2 THEN 식2
    ...
    ELSE 조건에 맞는경우가 없는 경우 실행할 식
END
-- NAME Column의 IS NULL 조건이 True인 경우 "No name" 출력
-- WHEN 조건들에 True인 조건이 없을 경우 ELSE 문을 통해 NAME Column의 값 출력
-- END 이후 그 Column의 별칭을 NAME으로 지정
SELECT 
    CASE
        WHEN NAME IS NULL THEN "No name"
        ELSE NAME
    END as NAME
FROM ANIMAL_INS

 

 COALESCE

지정한 표현식들 중에 NULL이 아닌 첫 번째 값을 반환한다.

표현식은 여러 항목 지정이 가능하고, 처음으로 만나는 NULL이 아닌 값을 출력한다.

-- NULL 처리 상황
SELECT COALESCE(Column명1, Column명1이 NULL인 경우 대체할 값)
FROM 테이블명


-- 배타적 OR 관계 열
-- Column1 ~ 4 중 NULL이 아닌 첫 번째 Column을 출력
SELECT COALESCE(Column명1, Column명2, Column명3, Column명4)
FROM 테이블명
-- NAME Column의 값이 NULL인 경우 다음 표현식으로 넘어간다.
-- 다음 표현식인 "No name"이 Null이 아니므로 "No name"을 출력.
SELECT COALESCE(NAME, "No name")
FROM ANIMAL_INS

'Database > SQL' 카테고리의 다른 글

[MySQL] 날짜 차이 함수 DATEDIFF, TIMESTAMPDIFF  (0) 2023.01.25
[MySQL] GROUP BY와 HAVING  (0) 2022.12.04
[MySQL] DB, Table import & export  (0) 2022.10.19
[MySQL] MySQL 명령어  (0) 2022.10.18
[MySQL] 데이터 베이스 인덱스  (0) 2022.10.08