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

1 분 소요

MySQL에서 Column의 값이 Null인 경우를 처리해주는 함수들은 IFNULL, CASE, COALESCE과 같은 함수들이 있다. Orcale의 NVL()과 비슷한 기능을 한다.

IFNULL

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

  • 기본 구조
    SELECT IFNULL(Column, "Null일 경우 대체 값") FROM 테이블명; 
    
  • Example
// NAME Column NULL 경우 "No name" 출력, NULL 아닌 경우 NAME Column 출력
SELECT IFNULL(NAME, "No name") as NAME
FROM ANIMAL_INS

IF()??

Null 처리는 사실 IF 함수와 IS NULL 조건으로도 가능하다.

  • Example
// NAME Column NULL True 경우 "No name", False 경우는 NAME Column 출력
SELECT IF(IS NULL(NAME), "No name", NAME) as NAME
FROM ANIMAL_INS

!! MS-SQL의 ISNULL()과는 다르다.

  • Example
    // MS-SQL 상황, ISNULL() 예시
    // NAME Column NULL 경우 "No name", Null 아닌 경우 NAME Column 값을 출력
    SELECT ISNULL(NAME, "No name") as NAME
    FROM ANIMAL_INS
    

    CASE

해당 Column 값을 조건식을 통해 True, False를 판단하여 조건에 맞게 Column값을 변환할 때 사용하는 함수이다.

  • 기본 구조
    CASE 
      WHEN 조건식1 THEN 1
      WHEN 조건식2 THEN 2
      ...
      ELSE 조건에 맞는경우가 없는 경우 실행할 
    END
    
  • Example
// 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

COALESCE지정한 표현식들 중에 NULL이 아닌 첫 번째 값을 반환한다. 모든 DBMS에서 사용가능

표현식은 여러 항목 지정이 가능하고, 처음으로 만나는 NULL이 아닌 값을 출력한다. 표현식이 모두 NULL일 경우엔 결과도 NULL 반환

COALESCE는 배타적 OR 관계 열에서 활용도가 높다. 엔터티(테이블)에서 두 개 이상의 속성(열) 중 하나의 값만 가지는 데이터 일 경우

  • 기본 구조 ```sql // 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 테이블명

- Example
```sql
// NAME Column의 값이 NULL인 경우 다음 표현식으로 넘어간다.
// 다음 표현식인 "No name"이 Null이 아니므로 "No name"을 출력.
SELECT COALESCE(NAME, "No name")
FROM ANIMAL_INS


🙆‍♂️ 참고사이트 🙇‍♂️

COALESCE() 함수[김정선의 SQL Server 이야기]

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

ifnull, coalesce[Rough Stone :: Developer]

[Mysql] NVL함수와 같은 기능을 하는 COALESCE ,IFNULL 함수[인큐]

댓글남기기