MySQL 값 비교 NULLIF 함수 사용 방법

MySQL에서 값을 비교해 처리를 하고 싶은 경우 IF문이나 CASE 문을 사용할 수 있습니다.

프로시저 내에서 처리를 하는 경우라면 IF문을 사용하는 경우가 많고, 쿼리에서 처리하고 싶은 경우에는 CASE가 많습니다.

간단한 처리일 경우에는 NULLIF() 함수를 사용해 값을 비교하는 처리를 작성할 수 있습니다.

NULLIF 함수의 사용 방법을 먼저 보겠습니다.

NULLIF(값1, 값2)

  • 값1 – 비교대상1
  • 값2 – 비교대상2
  • 반환값 – NULL 또는 값1

 

NULLIF 함수에 파라미터를 2개 지정합니다.

파라미터로 지정한 두 값이 같으면 NULL을 반환합니다.

같지 않은 경우에는 값1을 반환합니다.

예제를 보면서 사용 방법을 보겠습니다.

SET @var1 = 'abcd';
SET @var2 = 'abcd';

SELECT NULLIF(@var1,@var2);

-- 결과
> NULL

 

변수 var1과 var2에는 같은 값이 들어있습니다.

NULLIF 함수로 두 값을 비교한 결과는 NULL이 반환되었습니다.

SET @var1 = 'abcd';
SET @var2 = 'bcd';

SELECT NULLIF(@var1,@var2);

-- 결과
> abcd

 

이번에는 변수 var1과 var2 값이 다르기 때문에 var1 값인 abcd가 출력되었습니다.

NULLIF 함수는 CASE 문과 비슷한 동작을 합니다.

위 샘플을 CASE 문으로 작성해보겠습니다.

SET @var1 = 'abcd';
SET @var2 = 'bcd';
SELECT CASE WHEN @var1 = @var2 THEN @var1
		    ELSE NULL
	   END

 

NULLIF 함수에는 고정값을 지정해 사용할 수도 있습니다.

SET @var1 = 'abcd';
SET @var2 = '';
SET @var3 = NULL;

SELECT 
  NULLIF(@var1,NULL) AS TEST1
  , NULLIF(@var2,NULL) AS TEST2
  , NULLIF(@var3,NULL) AS TEST3;
  
-- 결과
> TEST1	TEST2	TEST3
> abcd          NULL

 

첫 번째 NULLIF에서는 값이 들어있기 때문에 변수 var1값이 출력되었습니다.

두 번째 NULLIF에서는 변수 var2에 공백이 들어있습니다.

공백 문자와 NULL은 다르기 때문에 var2값인 공백 문자가 출력되었습니다.

세 번째 NULLIF에서는 변수 var3 값과 비교 값이 같기 때문에 NULL이 출력되었습니다.

두 값을 비교하는 NULLIF 함수에 대해 알아봤습니다.

함수명이 IFNULL과 비슷해서 헷갈리는 경우도 있으니 사용할 때 주의해서 사용해야 합니다.

댓글