ISNULL (Transact-SQL)

以指定的取代值來取代 NULL。

主題連結圖示Transact-SQL 語法慣例

語法

ISNULL ( check_expression , replacement_value )

引數

  • check_expression
    這是要檢查 NULL 的運算式。check_expression 可以是任何類型。

  • replacement_value
    這是 check_expression 是 NULL 時所傳回的運算式。replacement_value 必須是能夠隱含地轉換成 check_expresssion 類型的類型。

傳回類型

傳回與 check_expression 相同的類型。

備註

如果 check_expression 值不是 NULL,便傳回這個值;否則,如果類型不同,便在 replacement_value 隱含地轉換成 check_expression 的類型之後,再傳回它。

範例

A. 搭配 AVG 使用 ISNULL

下列範例會尋找所有產品的加權平均值。它會在 Product 資料表的 Weight 資料行中,用值 50 來取代所有 NULL 項目。

USE AdventureWorks;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO

以下為結果集:

-------------------------- 
59.79                      

(1 row(s) affected)

B. 使用 ISNULL

下列範例會選取 AdventureWorks 中所有特殊供應項目的描述、折扣百分比、最小數量和最大數量。如果所有特殊供應項目的最大數量是 NULL,結果集所顯示的 MaxQty 便是 0.00。

USE AdventureWorks;
GO
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'
FROM Sales.SpecialOffer;
GO

以下為結果集:

Description       DiscountPct       MinQty      Max Quantity
---------------   -------------     --------    ---------------
No Discount       0.00              0           0
Volume Discount   0.02              11          14
Volume Discount   0.05              15          4
Volume Discount   0.10              25          0
Volume Discount   0.15              41          0
Volume Discount   0.20              61          0
Mountain-100 Cl   0.35              0           0
Sport Helmet Di   0.10              0           0
Road-650 Overst   0.30              0           0
Mountain Tire S   0.50              0           0
Sport Helmet Di   0.15              0           0
LL Road Frame S   0.35              0           0
Touring-3000 Pr   0.15              0           0
Touring-1000 Pr   0.20              0           0
Half-Price Peda   0.50              0           0
Mountain-500 Si   0.40              0           0

(16 row(s) affected)

C. 在 WHERE 子句中測試 NULL

請勿使用 ISNULL 來尋找 NULL 值。請改用 IS NULL。下列範例會尋找加權資料行中有 NULL 的所有產品。請注意 IS 和 NULL 之間的空格。

USE AdventureWorks;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO