다음을 통해 공유


NULLIF(Transact-SQL)

업데이트: 2006년 12월 12일

지정된 두 식이 같으면 Null 값을 반환합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

NULLIF ( expression , expression )

인수

  • expression
    유효한 스칼라 식입니다.

    자세한 내용은 식(Transact-SQL)을 참조하십시오.

반환 유형

첫 번째 expression과 동일한 유형을 반환합니다.

NULLIF는 두 식이 같지 않으면 첫 번째 expression을 반환합니다. 식이 같으면 NULLIF는 첫 번째 expression 유형의 Null 값을 반환합니다.

주의

NULLIF는 두 식이 동일하며 결과 식이 NULL인 검색된 CASE 함수와 동일합니다.

NULLIF 함수 내에 RAND()와 같은 시간에 종속적인 함수를 사용하지 않는 것이 좋습니다. 이렇게 하면 함수가 두 번 평가되고 두 호출에서 다른 결과가 반환됩니다.

1. 변경되지 않은 예산 반환

다음 예에서는 부서(dept), 금년도 예산(current_year) 및 전년도 예산(previous_year)을 보여 주는 budgets 테이블을 만듭니다. 금년 예산이 전년도 예산에서 변하지 않은 부서에는 NULL이 예산이 아직 결정되지 않은 부서에는 0이 사용됩니다. 예산이 결정된 부서만의 평균을 계산하고 이전 연도의 예산 값(previous_year 값 사용. 여기서 current_yearNULL임)을 포함하려면 NULLIF 함수와 COALESCE 함수를 결합합니다.

USE AdventureWorks;
GO
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_NAME = 'budgets')
   DROP TABLE budgets;
GO
SET NOCOUNT ON;
CREATE TABLE budgets
(
   dept            tinyint   IDENTITY,
   current_year      decimal   NULL,
   previous_year   decimal   NULL
);
INSERT budgets VALUES(100000, 150000);
INSERT budgets VALUES(NULL, 300000);
INSERT budgets VALUES(0, 100000);
INSERT budgets VALUES(NULL, 150000);
INSERT budgets VALUES(300000, 250000);
GO  
SET NOCOUNT OFF;
SELECT AVG(NULLIF(COALESCE(current_year,
   previous_year), 0.00)) AS 'Average Budget'
FROM budgets;
GO

결과 집합은 다음과 같습니다.

Average Budget                           
---------------------------------------- 
212500.000000

(1 row(s) affected)

2. NULLIF 및 CASE 비교

NULLIF와 CASE의 유사점을 보여 주기 위해 다음 쿼리는 MakeFlagFinishedGoodsFlag 열의 값이 같은지 여부를 평가합니다. 첫 번째 쿼리에서는 NULLIF를 사용합니다. 두 번째 쿼리에서는 CASE 문을 사용합니다.

USE AdventureWorks;
GO

SELECT ProductID, MakeFlag, FinishedGoodsFlag, 
   NULLIF(MakeFlag,FinishedGoodsFlag)AS 'Null if Equal'
FROM Production.Product
WHERE ProductID < 10;
GO

SELECT ProductID, MakeFlag, FinishedGoodsFlag,'Null if Equal' =
   CASE
       WHEN MakeFlag = FinishedGoodsFlag THEN NULL
       ELSE MakeFlag
   END
FROM Production.Product
WHERE ProductID < 10;
GO

참고 항목

참조

CASE(Transact-SQL)
decimal 및 numeric(Transact-SQL)
시스템 함수(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 12월 12일

새로운 내용
  • NULLIF 내부에 시간적 제한을 받는 함수를 사용하는 경우에 대한 정보를 추가했습니다.

2006년 4월 14일

새로운 내용
  • NULLIF와 CASE의 유사점을 보여 주는 예를 추가했습니다.