Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL NULLIF() 함수는 CASE 문과 어떻게 유사할까?

MySQL의 NULLIF() 제어 흐름 함수는 두 인수가 서로 같으면 NULL을 반환하고, 같지 않으면 첫 번째 인수를 반환합니다. 이러한 동작 방식 때문에 NULLIF() 함수는 아래와 같은 CASE 문과 완전히 동일하게 작동합니다.

CASE
WHEN expression1 = expression2 THEN NULL
ELSE
expression1
END

NULLIF() 함수의 동작 원리

NULLIF(expression1, expression2) 형태로 사용되며, 내부적으로 위의 CASE 문처럼 조건을 평가한 뒤 결과를 반환합니다. 즉, 두 값이 일치하는 경우 의도적으로 NULL을 만들어야 하는 상황에서 간결하게 활용할 수 있습니다.

예제로 확인하기

먼저 NULLIF() 함수의 기본 동작을 살펴보겠습니다.

mysql> SELECT NULLIF(100, 100);
+------------------+
| NULLIF(100, 100) |
+------------------+
|             NULL |
+------------------+

mysql> SELECT NULLIF(100, 200);
+------------------+
| NULLIF(100, 200) |
+------------------+
|              100 |
+------------------+

첫 번째 쿼리에서는 두 인수가 같으므로 NULL이 반환되고, 두 번째 쿼리에서는 두 인수가 다르므로 첫 번째 인수인 100이 반환됩니다.

이번에는 동일한 로직을 CASE 문으로 작성해 보겠습니다.

SELECT
    CASE
        WHEN 100 = 100 THEN NULL
        ELSE 100
    END AS result;

두 방식 모두 같은 결과를 반환하며, NULLIF() 함수는 이러한 CASE 문을 한 줄로 표현할 수 있는 축약형이라고 이해하면 됩니다. 데이터 정리나 0으로 나누기 오류 방지 등 실무에서 유용하게 활용됩니다.