ღ yuni_world ღ

[MySQL] NULL값 채우기 (COALESCE, IFNULL, IF문, CASE문) 본문

MySQL/Tip

[MySQL] NULL값 채우기 (COALESCE, IFNULL, IF문, CASE문)

ღ유닝이ღ 2025. 5. 23. 19:34

📌 데이터의 NULL값을 다른 값으로 채우는 방법 4가지

📚 COALESCE(컬럼1, 컬럼2, ..., 컬럼n(대체할 값), ...)

  • 컬럼1이 null 이면 컬럼2를 반환, null이 아니면 컬럼1을 반환
  • 컬럼1이 null & 컬럼2이 null 이면 컬럼3를 반환
  • 이처럼 컬럼1, 컬럼2, ... , 컬럼n-1 이 모두 null이라면 컬럼n(임의의 문자도 가능)이 반환되는 함수
  • 대체할 값은 컬럼이 아닌 임의의 문자로 대체 가능

➡️사용 예시 쿼리

## 예시 1
select coalesce(col1, col2, col3, '끝')
from table1

-- col1 이 null이 아니면 col1, null이면 col2 반환
-- col1 이 null & col2가 null 이면 col3 반환
-- col1, col2, col3 모두 null 이면 '끝' 반환


## 예시 2
select coalesce(col1, '끝')
from table1

-- col1 이 null이 아니면 col1, null이면 '끝' 반환

 

📚 IFNULL(컬럼1, 컬럼2(대체할 값))

  • 컬럼1이 null 이면 컬럼2(대체할 값)을 반환
  • 대체할 값은 컬럼이 아닌 임의의 문자로 대체 가능

➡️사용 예시 쿼리

## 예시 1
select ifnull(col1, col2) -- col1이 null이면 col2 반환 
from table1

## 예시 2
select ifnull(col1, '끝') -- col1이 null이면 '끝' 반환
from table1

⭐ COALESCE 와 IFNULL의 차이점

  • COALESCE는 여러개의 파라미터를 사용할 수 있지만, IFNULL은 두개의 파라미터만 사용 가능
  • COALESCE는 표준 SQL함수로 다양한 RDBS에서 사용가능하지만, IFNULL은 MySQL에서만 사용 가능한 함수 

📚 IF 문

  • IF(조건문, 참일 때의 값, 거짓일 때의 값) 으로 사용

➡️사용 예시 쿼리

select if(score >= 90, 'A', 'B') -- score가 90 이상이면 A, 아니면 B 반환 
from table1

 

📚 CASE 문

  • 'CASE WHEN 조건문 THEN 반환값 END' 으로 사용 가능하며, 1개 이상의 조건문 사용 가능
  • CASE 문은 조건을 위에서부터 차례대로 평가하여, 처음으로 참이 되는 조건의 결과만 반환함. 이후 조건이 참이더라도 무시되므로 조건의 순서가 중요!
    • 따라서 아래 예시 쿼리에서 score점수에 따라 A, B, C, D가 나뉠 수 있게됨

➡️사용 예시 쿼리

select 
    case 
    	when score >= 90 then 'A' -- 90 이상이면 A
        when score >= 80 then 'B' -- 80 이상이면 B
        when score >= 70 then 'C' -- 70 이상이면 C
        else 'D' -- 이외는 모두 D
    end 
from table

 

'MySQL > Tip' 카테고리의 다른 글

[MySQL] 재귀 쿼리(WITH RECURSIVE 문)  (0) 2025.10.24
[MySQL] DATE_FORMAT  (2) 2023.09.09
[MySQL] Column 'FLAVOR' in field list is ambiguous 오류  (0) 2023.09.09