ISNULL (Transact-SQL)
適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL エンドポイント
Microsoft Fabric のウェアハウス
NULL 値を、指定された値に置き換えます。
構文
ISNULL ( check_expression , replacement_value )
Note
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_value が check_expression より長い場合は切り捨てられることがあります。
Note
最初の 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 の場合、結果セットに表示される MaxQty
は 0.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
の製品をすべて検索しています。 IS
と NULL
の間にスペースがあることに注意してください。
USE AdventureWorks2012;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO
例: Azure Synapse Analytics、Analytics Platform System (PDW)
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
の製品をすべて検索しています。 IS
と NULL
の間にスペースがあることに注意してください。
-- 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)