RDBS/MYSQL

[MySQL]다양한 NULL 처리 방법(IFNULL, CASE문, COALESCE)

MoonSta 2023. 5. 1. 01:51

📌NULL 처리

 MySQL에서는 데이터에 대한 NULL 처리가 필요한 상황이 있다. 이러한 상황에서 사용할 수 있는 MySQL에 다양한 NULL 처리 방법에 대해 알아보자.

 

 

📌IFNULL

SELECT IFNULL("COLIUMN", "대체 값") 
  FROM 테이블;
  
  
#IFNULL 함수는 컬럼 데이터가 NULL인 경우 대체 값으로 치환할 수 있다. 기본 구조는 다음과 같다.

 

📌IFNULL - 예제

mem_id mem_name mem_address
1

문OO 경기 안산시
2 차OO 경기 수원시

3

최OO NULL

 

 

SELECT mem_id
     , mem_name
     , IFNULL(mem_address, "주소 누락") AS mem_address
   FROM member
   
#mem_address에 대한 null값을 "주소 누락"으로 치환하였다.

 

📌조회 결과 

mem_id mem_name mem_address
1

문OO 경기 안산시
2 차OO 경기 수원시

3

최OO 주소 누락

 

 

📌CASE문 

 CASE문을 사용하여 NULL인 데이터에 대한 NULL의 CASE를 처리할 수 있다. 이 내용은 이전에 정리하였기에 아래 링크에서 하도록 하자.

 

2023.02.06 - [RDBS/MYSQL] - [MySQL] CASE문의 기본 사용법 및 사용 시 주의 사항

 

[MySQL]CASE문의 기본 사용법 및 사용 시 주의 사항

📌CASE문의 기본 사용법 및 사용 시 주의 사항 MySQL을 사용하고 쿼리(Query) 구문을 작성하면서 때에 따라 다른 결과를 출력해야 하는 상황이 발생한다. 이러한 상황에서 자주 사용하는 방법이 CASE

mooonstar.tistory.com

 

 

📌COALESCE

SELECT COALESCE(Column, "대체 값")
   FROM 테이블
   
# IFNULL과의 사용법이 비슷한 COALECE 함수를 사용하여 NULL 처리가 가능하다.

 

 

📌COALESCE - IFNULL과의 차이

 위의 기본 구조를 보면 IFNULL과 사용법이 유사하다. 하지만 두 개의 파라미터를 사용하는 IFNULL과는 다르게 COALESCE는 여러 개의 파라미터 사용이 가능하다.

 

 

📌COALESCE - 예제

col1 col2 col3
1 NULL 3
1 2 NULL
NULL 2 3
SELECT coalesce(col1, col2, col3) AS "NULL이 아닌 첫 번째 값" 
   FROM col;
   
#IFNULL과 다르게 COALESCE는 파라미터로 여러 개를 가질 수 있다. 
#여러 개의 파라미터 중 NULL이 아닌 첫 번째 값을 출력한다.

 

📌조회 결과

NULL이 아닌 첫 번째 값
1
1
2

 

 

📌IFNULL VS COALESCE

우선 위 두 개의 함수의 대한 기능적인 차이는 파라미터의 수의 차이이다. 또한 MySQL에서만 사용가능한 IFNULL과는 다르게 COALESCE는 표준 SQL 함수이므로 다양한 RDBS에서 유연하게 사용이 가능한 COALESCE 함수를 적극 사용하는 것이 좋다고 생각한다.