MySQL의 NULLIF()는 대표적인 제어 흐름(control flow) 함수 중 하나로, 두 인수가 서로 같지 않을 경우 첫 번째 인수를 반환합니다. 여기서 중요한 점은, 두 인수가 일치하지 않으면 MySQL이 첫 번째 인수를 두 번 평가한 뒤 그 결과를 출력값으로 돌려준다는 것입니다.
동작 원리 이해하기
NULLIF(expr1, expr2)는 내부적으로 다음과 같이 작동합니다.
- expr1 = expr2 이면 → NULL 반환
- expr1 ≠ expr2 이면 → expr1(첫 번째 인수) 반환
즉, 두 값이 다른 경우 MySQL은 첫 번째 표현식을 두 차례에 걸쳐 평가하여 최종 결과를 결정하게 됩니다.
예시
mysql> Select NULLIF('Tutorialspoint','MySQL');
+----------------------------------+
| NULLIF('Tutorialspoint','MySQL') |
+----------------------------------+
| Tutorialspoint |
+----------------------------------+
1 row in set (0.00 sec)위 예시에서 두 인수인 'Tutorialspoint'와 'MySQL'은 서로 다르기 때문에, MySQL은 첫 번째 인수인 'Tutorialspoint'를 두 번 평가한 후 이를 그대로 결과로 반환했습니다.
정리
NULLIF()는 주로 특정 값과 비교하여 조건적으로 NULL 처리를 하고 싶을 때 유용하게 사용됩니다. 두 인수가 같으면 NULL을, 다르면 첫 번째 인수를 반환한다는 규칙과 함께, 인수가 다를 때 첫 번째 표현식이 두 번 평가된다는 점을 기억해 두면 쿼리 성능 분석에도 도움이 됩니다.