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과 비슷해서 헷갈리는 경우도 있으니 사용할 때 주의해서 사용해야 합니다.
댓글