개발하다 보면 조회 결과에 NULL이 들어와서
화면이나 계산할 때 애매해지는 경우가 있다.
이럴 때 MariaDB에서는 대표적으로 IFNULL(), COALESCE() 를 사용할 수 있다.
둘 다 NULL 값을 다른 값으로 바꿀 때 사용할 수 있는데 동작 방식에는 조금 차이가 있다.
간단하게 정리해봤다.
1. IFNULL 사용법
IFNULL()은 값이 NULL이면 두 번째 값으로 바꿔준다. 형식은 간단하다.
IFNULL(값, 대체값)
예를 들어
SELECT IFNULL(NULL, 0);
결과는

이 된다.
NULL이 아니면 원래 값을 그대로 반환한다.
SELECT IFNULL(100, 0);
결과

즉,
NULL → 대체값
NULL이 아님 → 원래 값
이라고 생각하면 된다.
2. 실제 컬럼에 IFNULL 사용하기
예를 들어 아래와 같은 테이블이 있다고 가정해보자.
CREATE TABLE USER_POINT (
USER_CD VARCHAR(30),
POINT INT
);
데이터를 넣어준다.
INSERT INTO USER_POINT
(
USER_CD,
POINT
)
VALUES
('USER001', 1000),
('USER002', NULL),
('USER003', 500);
그냥 조회하면
SELECT *
FROM USER_POINT;
결과는 대략 아래처럼 나온다.

이때 NULL을 0으로 보여주고 싶다면
SELECT
USER_CD,
IFNULL(POINT, 0) AS POINT
FROM USER_POINT;
이렇게 사용할 수 있다.
결과

NULL 대신 0으로 처리된 걸 확인할 수 있다.
3. COALESCE 사용법
COALESCE()는 여러 값 중에서 처음으로 NULL이 아닌 값을 반환한다.
형식은 아래와 같다.
COALESCE(값1, 값2, 값3 ...)
예를 들어
SELECT COALESCE(NULL, NULL, 100, 200);
결과는

이다.
앞에서부터 값을 확인하다가 처음으로 NULL이 아닌 100을 반환한다.
4. COALESCE 예제
예를 들어 닉네임이 없으면 이름을 보여주고 이름도 없으면 기본값을 보여주고 싶다고 해보자.
SELECT
COALESCE(USER_NK, USER_NM, '사용자') AS DISPLAY_NM
FROM USER_INFO;
동작 방식은 아래와 같다.
USER_NK가 있으면 → USER_NK
USER_NK가 NULL이고 USER_NM이 있으면 → USER_NM
둘 다 NULL이면 → '사용자'
여러 값을 순서대로 확인할 수 있다는 게 IFNULL()과 가장 큰 차이다.
5. IFNULL과 COALESCE 차이
둘의 차이를 간단하게 보면 아래와 같다.
| 구분 | IFNULL | COALESCE |
| 인자 개수 | 2개 | 여러 개 |
| NULL 대체 | 가능 | 가능 |
| 여러 값 순차 확인 | 불가능 | 가능 |
| 사용법 | 간단함 | 조금 더 유연함 |
단순히 NULL이면 0으로 바꾼다 같은 경우에는
IFNULL(POINT, 0)
이 간단하다.
반대로 A가 NULL이면 B, B도 NULL이면 C처럼 여러 값을 순서대로 확인해야 한다면
COALESCE(A, B, C)
가 편하다.
6. 합계에서 NULL 처리하기
실무에서는 SUM() 같은 집계 함수와 같이 사용할 때도 유용하다.
예를 들어 특정 사용자의 포인트 합계를 조회한다고 해보자.
SELECT SUM(POINT)
FROM USER_POINT
WHERE USER_CD = 'USER999';
조회되는 데이터가 없다면 결과가 NULL이 될 수 있다.
이럴 때
SELECT IFNULL(SUM(POINT), 0)
FROM USER_POINT
WHERE USER_CD = 'USER999';
처럼 사용하면 결과를 0으로 받을 수 있다.
COALESCE로도 똑같이 처리할 수 있다.
SELECT COALESCE(SUM(POINT), 0)
FROM USER_POINT
WHERE USER_CD = 'USER999';
둘 다 결과는


이 된다.
이런 식으로 합계 값을 바로 숫자로 받아야 할 때 NULL 처리용으로 자주 사용할 수 있다.
어떤 걸 사용하면 될까?
개인적으로는 이렇게 생각하면 편하다.
단순히 NULL인지 확인해서 하나의 값으로 바꾸기 라면
IFNULL(POINT, 0)
여러 값 중에서 처음으로 값이 있는 데이터를 가져오기 라면
COALESCE(VALUE1, VALUE2, VALUE3)
를 사용하면 된다.
정리
IFNULL()은
IFNULL(NULL, 0)
처럼 두 값 중 하나를 선택하는 방식이다.
COALESCE()는
COALESCE(NULL, NULL, 100, 200)
처럼 여러 값 중 처음으로 NULL이 아닌 값을 반환한다.
정리하면
IFNULL → 간단한 NULL 대체
COALESCE → 여러 값 중 첫 번째 유효값 선택
이라고 보면 된다.
'개발지식 > DB' 카테고리의 다른 글
| [MariaDB] 오늘 날짜 데이터 조회하기 | DATE, BETWEEN, 범위 조건 비교 (0) | 2026.09.22 |
|---|---|
| [DBeaver] localhost에서 MariaDB 데이터베이스 생성하기 (0) | 2026.09.21 |
| [MariaDB] Windows에 MariaDB Server 설치하기 (0) | 2026.09.20 |
| [데이터베이스/DB] JOIN이란? (종류, 정리) (0) | 2023.09.07 |
| [데이터베이스/DB] SELECT문의 실행 순서 (0) | 2023.09.06 |
