DB

[MySQL] IFNULL로 NULL 값을 기본값으로 대체하기

인생아 2025. 7. 25. 08:40
반응형

데이터베이스에서 NULL은 "값이 없음"을 의미하지만, 그대로 출력되면 사용자에게 혼란을 줄 수 있다. 이럴 때 유용하게 사용하는 함수가 바로 IFNULL()이다. IFNULL은 NULL 값을 기본값으로 치환해주는 MySQL의 대표적인 흐름 제어 함수이다.

IFNULL 함수 기본 문법

IFNULL(표현식, 대체값)

표현식이 NULL이면 두 번째 인자인 대체값을 반환하고, NULL이 아니면 원래 값을 반환한다.

예제 1: 사용자 이름 기본값 설정

SELECT user_id, IFNULL(name, '이름없음') AS display_name
FROM users;

사용자 이름이 NULL인 경우 '이름없음'으로 대체하여 출력한다.

IFNULL은 SELECT, WHERE, JOIN에서도 자주 사용

  • SELECT 결과에서 NULL을 기본 문자열로 치환
  • 숫자 계산 시 NULL을 0이나 1로 바꿔 수식 오류 방지
  • LEFT JOIN 시, 존재하지 않는 값의 기본 대체로 활용

예제 2: 합계 계산 시 NULL 방지

SELECT order_id,
       price,
       IFNULL(discount, 0) AS discount,
       price - IFNULL(discount, 0) AS actual_price
FROM orders;

discount가 NULL일 경우 0으로 간주해 계산을 안전하게 한다.

반응형

실무 예제 3: LEFT JOIN 후 기본값 설정

SELECT a.id, a.name,
       IFNULL(b.phone, '없음') AS 전화번호
FROM customer a
LEFT JOIN customer_detail b ON a.id = b.id;

조인된 테이블에 정보가 없을 경우, NULL 대신 '없음'을 표시할 수 있다.

IFNULL vs COALESCE 차이

함수명 특징
IFNULL(a, b) a가 NULL이면 b 반환
COALESCE(a, b, c...) NULL이 아닌 첫 번째 값을 반환 (2개 이상 가능)

IFNULL은 2개 인자만 처리 가능하지만, COALESCE는 여러 후보 중 첫 번째 NULL이 아닌 값을 고른다.

예제 4: 여러 필드에서 우선순위 지정

SELECT COALESCE(nickname, username, '익명') AS 표시이름
FROM member;

순서대로 nickname → username → '익명'을 체크해 NULL이 아닌 값을 선택한다.

정리

  • IFNULL()은 NULL을 기본값으로 대체하는 함수로, 데이터 표시 안정성을 높인다.
  • SELECT, JOIN, 계산식 등 다양한 위치에서 널 값을 안전하게 처리할 수 있다.
  • IFNULL()은 COALESCE()보다 단순하지만 대부분의 경우 더 간단하게 사용할 수 있다.
  • 실무에서 사용자 정보, 할인 계산, 주소/연락처 정보 등 NULL이 자주 등장하는 곳에서 유용하게 쓰인다.

참고 문서

https://dev.mysql.com/doc/refman/8.0/en/control-flow-functions.html#function_ifnull

 

반응형