[MariaDB] IFNULL과 COALESCE 차이 | NULL 값 처리하기

2026. 9. 27. 18:26·개발지식/DB
반응형

개발하다 보면 조회 결과에 NULL이 들어와서
화면이나 계산할 때 애매해지는 경우가 있다.

이럴 때 MariaDB에서는 대표적으로 IFNULL(), COALESCE() 를 사용할 수 있다.

둘 다 NULL 값을 다른 값으로 바꿀 때 사용할 수 있는데 동작 방식에는 조금 차이가 있다.

간단하게 정리해봤다.


1. IFNULL 사용법

IFNULL()은 값이 NULL이면 두 번째 값으로 바꿔준다. 형식은 간단하다.

IFNULL(값, 대체값)

예를 들어

SELECT IFNULL(NULL, 0);

결과는

IFNULL(NULL, 0)

이 된다.

NULL이 아니면 원래 값을 그대로 반환한다.

SELECT IFNULL(100, 0);

결과

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;

결과는 대략 아래처럼 나온다.

USER_POINT

이때 NULL을 0으로 보여주고 싶다면

SELECT
    USER_CD,
    IFNULL(POINT, 0) AS POINT
FROM USER_POINT;

이렇게 사용할 수 있다.

결과

IFNULL(NULL, 0)

NULL 대신 0으로 처리된 걸 확인할 수 있다.


3. COALESCE 사용법

COALESCE()는 여러 값 중에서 처음으로 NULL이 아닌 값을 반환한다.

형식은 아래와 같다.

COALESCE(값1, 값2, 값3 ...)

예를 들어

SELECT COALESCE(NULL, NULL, 100, 200);

결과는

COALESCE

이다.

앞에서부터 값을 확인하다가 처음으로 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';

둘 다 결과는

IFNULL(SUM)

COALESCE(SUM)

이 된다.

이런 식으로 합계 값을 바로 숫자로 받아야 할 때 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
'개발지식/DB' 카테고리의 다른 글
  • [MariaDB] 오늘 날짜 데이터 조회하기 | DATE, BETWEEN, 범위 조건 비교
  • [DBeaver] localhost에서 MariaDB 데이터베이스 생성하기
  • [MariaDB] Windows에 MariaDB Server 설치하기
  • [데이터베이스/DB] JOIN이란? (종류, 정리)
견코
견코
개발로 코딩하기 프로젝트
  • 견코
    개발로 코딩하기
    견코
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 앱개발
      • 개발지식
        • Java
        • Spring
        • Vue
        • CS
        • DB
        • Next.js
      • 잡동사니
        • 개요
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    null처리
    MariaDB날짜조회
    빈문자열
    날짜조건
    doubleint변환
    로컬db
    java
    DBeaverMariaDB
    MariaDB연결
    mariaDB
    자바
    문자열체크
    오늘날짜조회
    SQL
    dbeaver
    localhost
    MariaDBNULL
    데이터베이스
    MariaDBServer
    isEmptyisBlank차이
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
견코
[MariaDB] IFNULL과 COALESCE 차이 | NULL 값 처리하기
상단으로

티스토리툴바