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 列にあるすべての NULL エントリに、値 50 を代入します。
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 をテストする
NULL 値の検索に ISNULL を使用しないでください。代わりに IS NULL を使用します。次の例では、weight 列が NULL の製品をすべて検索しています。IS と NULL の間にスペースがあることに注意してください。
USE AdventureWorks2008R2;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO