Udostępnij za pośrednictwem


NULLIF (Transact-SQL)

Zwraca wartość null, jeśli dwa wyrażenia określonego są równe.

Topic link iconKonwencje składni języka Transact-SQL

NULLIF ( expression , expression )

Argumenty

  • expression
    Czy wszystkie ważne wartość skalarna wyrażenie.

Zwracane typy

Zwraca wartość tego samego typu co pierwszy expression.

NULLIF zwraca pierwszy expression Jeśli dwa wyrażenia nie są równe. Jeśli wyrażenia znajdują się równe, NULLIF zwraca wartość null typu pierwszego expression.

Remarks

NULLIF jest równoznaczne z wyszukiwanych wyrażeń przypadek dwa wyrażenia są równe i wynikowe wyrażenie ma wartość NULL.

Firma Microsoft zaleca, aby nie używać funkcja zależnych od czas, takich jak RAND(), w obrębie danej funkcja NULLIF.Może to spowodować, że funkcja evaluted dwukrotnie i ma zwrócić wywołania dwa różne wyniki.

Przykłady

A.Zwracanie kwoty budżetu, które nie uległy zmianie

Poniższy przykład tworzy budgets tabela, aby pokazać (działdept) jego bieżącej (budżetucurrent_year) i jego wcześniejszych (budżetuprevious_year). W bieżącym roku NULL Służy do działów z budżetów, które nie zostały zmienione z poprzedniego roku i 0 Służy do budżetów, które nie zostały jeszcze ustalone. Aby dowiedzieć się, średnia tylko tych działów, które odbierają budżetu i dołączyć wartości budżetu w poprzednim roku (za pomocą previous_year wartość, której current_year jest NULL), łączyć NULLIF i COALESCE funkcje.

USE AdventureWorks;
GO
IF OBJECT_ID ('dbo.budgets','U') IS NOT NULL
   DROP TABLE budgets;
GO
SET NOCOUNT ON;
CREATE TABLE dbo.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

Here is the result set.

Średnia budżetu

--------------

212500.000000

(dotyczy wiersze 1)

B.Porównanie NULLIF i przypadek

Aby pokazać podobieństwa między NULLIF i CASE, wypróbuj następujące kwerendy czy wartości w polach MakeFlag i FinishedGoodsFlag kolumny są takie same. Używa pierwszej kwerendy NULLIF. W drugiej kwerendzie użyto CASE wyrażenie.

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