ISNULL (Transact-SQL)
以指定的取代值來取代 NULL。
語法
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 AdventureWorks2008R2;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO
以下為結果集:
--------------------------
59.79
(1 個資料列受到影響)
B. 使用 ISNULL
下列範例會選取 AdventureWorks2008R2 中所有特殊供應項目的描述、折扣百分比、最小數量和最大數量。如果所有特殊供應項目的最大數量是 NULL,結果集所顯示的 MaxQty 便是 0.00。
USE AdventureWorks2008R2;
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 個資料列受到影響)
C. 在 WHERE 子句中測試 NULL
請勿使用 ISNULL 來尋找 NULL 值。請改用 IS NULL。下列範例會尋找加權資料行中有 NULL 的所有產品。請注意 IS 和 NULL 之間的空格。
USE AdventureWorks2008R2;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO