Recent Posts
Recent Comments
ღ yuni_world ღ
[MySQL] NULL값 채우기 (COALESCE, IFNULL, IF문, CASE문) 본문
📌 데이터의 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 |