반응형
MySQL에서 NULLIF() 함수는 두 값을 비교해서 같으면 NULL을 반환하고, 다르면 첫 번째 값을 그대로 반환하는 특이한 흐름 제어 함수이다. 주로 0 나누기 오류 방지, 조건적 NULL 처리, 중복 체크 회피 등에 사용된다.

NULLIF 함수 기본 문법
NULLIF(값1, 값2)
- 값1 = 값2이면 NULL 반환.
- 값1 ≠ 값2이면 값1을 반환.
이 단순한 로직이 다양한 실무에서 꽤 강력한 기능을 한다.
예제 1: 값이 같으면 NULL로 처리
SELECT NULLIF(100, 100); -- 결과: NULL
SELECT NULLIF(100, 50); -- 결과: 100
반응형
0으로 나누기 방지: 실무 최강 활용법
NULLIF는 0으로 나눴을 때 발생하는 오류를 방지하기 위한 가장 흔한 방법이다.
예제 2: 나눗셈 계산 시 0 회피
SELECT sales,
targets,
sales / NULLIF(targets, 0) AS 달성률
FROM sales_data;
targets가 0일 경우 NULLIF(targets, 0)는 NULL을 반환하므로 sales / NULL이 되어 오류 없이 처리된다.
조건적 NULL 반환: 중복 회피
NULLIF를 사용하면 특정 조건에서만 NULL로 대체할 수 있어, 중복된 데이터를 걸러낼 때도 유용하다.
예제 3: 최근 변경된 항목만 추출
SELECT *,
NULLIF(current_value, previous_value) AS 변경여부
FROM version_tracking;
변경이 없는 경우 NULL, 변경된 경우에만 current_value를 반환한다.
IF, IFNULL과의 차이점
| 함수명 | 역할 |
| IF() | 조건에 따라 두 값 중 하나 선택 |
| IFNULL() | NULL일 경우 대체값 반환 |
| NULLIF() | 같으면 NULL, 다르면 첫 번째 값 반환 |
NULLIF()는 조건이 아닌 '두 값의 비교 결과'에 따라 NULL을 반환하는 점이 가장 큰 특징이다.
정리
- NULLIF(a, b)는 a == b일 때 NULL, 아니면 a를 반환한다.
- 주로 0 나누기 방지, 조건부 NULL 처리, 변경값 탐지에 활용된다.
- IF나 IFNULL과 다르게 직접적인 비교 기반이며, 비교 결과 자체가 조건이 된다.
- 실무에서 안정성과 유연성을 높이기 위한 고급 테크닉으로 널리 쓰인다.
참고 문서
https://dev.mysql.com/doc/refman/8.0/en/control-flow-functions.html#function_nullif
반응형
'DB' 카테고리의 다른 글
| [MySQL] 문자열 → 날짜 변환: STR_TO_DATE 실전 예제 📆 (1) | 2025.07.25 |
|---|---|
| [MySQL] CONVERT 함수와 CAST 차이점 비교 (0) | 2025.07.25 |
| [MySQL] CAST 함수로 데이터 형 변환하기 (0) | 2025.07.25 |
| [MySQL] CASE WHEN으로 다중 조건 처리하기 (1) | 2025.07.25 |
| [MySQL] IFNULL로 NULL 값을 기본값으로 대체하기 (0) | 2025.07.25 |
| [MySQL] IF 함수로 조건 분기 처리하는 법 (0) | 2025.07.25 |
| [MySQL] PI, RAND, SIGN 등 특수 수학 함수 모음 (3) | 2025.07.25 |
| [MySQL] RADIANS, DEGREES로 각도 변환하기 (0) | 2025.07.24 |