NULLIF(Transact-SQL)
업데이트: 2006년 12월 12일
지정된 두 식이 같으면 Null 값을 반환합니다.
구문
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_year
는 NULL
임)을 포함하려면 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의 유사점을 보여 주기 위해 다음 쿼리는 MakeFlag
및 FinishedGoodsFlag
열의 값이 같은지 여부를 평가합니다. 첫 번째 쿼리에서는 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)
도움말 및 정보
변경 내역
릴리스 | 내역 |
---|---|
2006년 12월 12일 |
|
2006년 4월 14일 |
|