共用方式為


ISNULL (Transact-SQL)

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

適用於:SQL Server (SQL Server 2008 透過目前版本)、Windows Azure SQL 資料庫 (初始版本,透過目前版本)。

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

語法

ISNULL ( check_expression , replacement_value )

引數

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

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

傳回類型

傳回與 check_expression 相同的類型。 如果提供了常值 NULL 做為 check_expression,就會傳回 replacement_value 的資料類型。 如果提供了常值 NULL 做為 check_expression 但是沒有提供任何 replacement_value,就會傳回 int。

備註

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

注意

使用 COALESCE (Transact-SQL) 傳回第一個非 Null 值。

範例

A.使用 ISNULL 搭配 AVG

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

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

以下為結果集:

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

59.79

(1 row(s) affected)

B.使用 ISNULL

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

USE AdventureWorks2012;
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 AdventureWorks2012;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO

請參閱

參考

運算式 (Transact-SQL)

IS [NOT] NULL (Transact-SQL)

系統函數 (Transact-SQL)

WHERE (Transact-SQL)

COALESCE (Transact-SQL)