The Wayback Machine - http://web.archive.org/web/20140105225556/http://msdn.microsoft.com:80/zh-tw/library/ms177562(v=sql.90).aspx
匯出 (0) 列印
全部展開
Expand Minimize
本主題尚未接受評分 - 為這個主題評分

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()。這可能會導致系統評估此函數兩次,並且傳回與兩個引動過程不同的結果。

A. 傳回尚未變更的預算數量

下列範例會建立一份 budgets 資料表,來顯示部門 (dept) 及其目前預算 (current_year) 和前一年的預算 (previous_year)。對今年而言,如果部門預算與前一年相同,就使用 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)

B. 比較 NULLIF 和 CASE

下列查詢會評估 MakeFlag 和 FinishedGoodsFlag 資料行中的值是否相同,以顯示 NULLIF 和 CASE 之間的相似度。第一個查詢使用 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

版本 歷程記錄

2006 年 12 月 12 日

新增內容:
  • 新增有關在 NULLIF 內部使用有時效性函數的資訊。

2006 年 4 月 14 日

新增內容:
  • 新增顯示 NULLIF 和 CASE 之間相似度的範例。
本文對您有任何幫助嗎?
(剩餘 1500 個字元)

社群新增項目

新增
顯示:
© 2014 Microsoft. 著作權所有,並保留一切權利。