반응형
데이터베이스에서 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
반응형
'DB' 카테고리의 다른 글
| [MySQL] CONVERT 함수와 CAST 차이점 비교 (0) | 2025.07.25 |
|---|---|
| [MySQL] CAST 함수로 데이터 형 변환하기 (0) | 2025.07.25 |
| [MySQL] CASE WHEN으로 다중 조건 처리하기 (1) | 2025.07.25 |
| [MySQL] NULLIF로 두 값 비교 후 조건 처리하기 (3) | 2025.07.25 |
| [MySQL] IF 함수로 조건 분기 처리하는 법 (0) | 2025.07.25 |
| [MySQL] PI, RAND, SIGN 등 특수 수학 함수 모음 (3) | 2025.07.25 |
| [MySQL] RADIANS, DEGREES로 각도 변환하기 (0) | 2025.07.24 |
| [MySQL] ASIN, ACOS, ATAN 역삼각함수 활용법 (2) | 2025.07.24 |