ISNULL (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure SQL Managed Instance はいAzure Synapse Analytics はいParallel Data Warehouse

NULL 値を、指定された値に置き換えます。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

ISNULL ( check_expression , replacement_value )  

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

check_expression
NULL かどうかを調べるです。 check_expression は任意のデータ型です。

replacement_value
check_expression が NULL の場合に返される式です。 replacement_value は、暗黙的に check_expression の型に変換できる型である必要があります。

戻り値の型

check_expression と同じ型が返されます。 リテラル NULL が check_expression として指定されている場合、replacement_value のデータ型を返します。 リテラル NULL が check_expression として指定されていて replacement_value が指定されていない場合、int を返します。

解説

check_expression の値が NULL でない場合、その値が返されます。それ以外の場合は、replacement_value が返されます。このとき、型どうしが異なる場合は check_expression の型に暗黙的に変換されてから返されます。 replacement_value は、replacement_valuecheck_expression より長い場合は切り捨てられることがあります。

注意

最初の null 以外の値を返すには、COALESCE (Transact-SQL) を使用します。

A. AVG で ISNULL を使用する

次の例では、すべての製品の重量の平均を求めます。 50 テーブルの Weight 列にあるすべての NULL エントリに、値 Product を代入します。

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

結果セットは次のようになります。

-------------------------- 
59.79  
 
(1 row(s) affected)

B. ISNULL を使用する

次の例では、AdventureWorks2012 のすべての特価品について、説明、値引き率、最小数量、および最大数量を選択します。 ある特価品の最大数量が NULL の場合、結果セットに表示される MaxQty0.00 です。

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

結果セットは次のようになります。

説明 DiscountPct MinQty 最大数量
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 をテストする

NULL 値の検索に ISNULL を使用しないでください。 代わりに IS NULL を使用します。 次の例では、weight 列が NULL の製品をすべて検索しています。 ISNULL の間にスペースがあることに注意してください。

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

例: Azure Synapse Analytics、Parallel Data Warehouse

D. AVG で ISNULL を使用する

次の例では、サンプル テーブルのすべての製品の重量の平均を求めます。 50 テーブルの Weight 列にあるすべての NULL エントリに、値 Product を代入します。

-- Uses AdventureWorks  
  
SELECT AVG(ISNULL(Weight, 50))  
FROM dbo.DimProduct;  

結果セットは次のようになります。

--------------------------   
52.88   

E. ISNULL を使用する

次の例では、ISNULL を使ってMinPaymentAmount 列が NULL かどうかをテストし、NULL の行には値 0.00 を表示します。

-- Uses AdventureWorks  
  
SELECT ResellerName,   
       ISNULL(MinPaymentAmount,0) AS MinimumPayment  
FROM dbo.DimReseller  
ORDER BY ResellerName;  
  

次に結果セットの一部を示します。

ResellerName MinimumPayment
A Bicycle Association 0.0000
A Bike Store 0.0000
A Cycle Shop 0.0000
A Great Bicycle Company 0.0000
A Typical Bike Shop 200.0000
Acceptable Sales & Service 0.0000

F. IS NULL を使用して WHERE 句の NULL をテストする

次の例では、NULL 列が Weight の製品をすべて検索しています。 ISNULL の間にスペースがあることに注意してください。

-- Uses AdventureWorks  
  
SELECT EnglishProductName, Weight  
FROM dbo.DimProduct  
WHERE Weight IS NULL;  

参照

式 (Transact-SQL)
IS NULL (Transact-SQL)
システム関数 (Transact-SQL)
WHERE (Transact-SQL)
COALESCE (Transact-SQL)