ISNULL(Transact-SQL)
適用対象:SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス Microsoft Fabric の SQL データベース
NULLを指定した置換値に置き換えます。
構文
ISNULL ( check_expression , replacement_value )
引数
check_expression
式 NULLをチェックします。
check_expression は任意のデータ型です。
replacement_value
check_expressionがNULLされている場合に返される式。
replacement_value は、暗黙的に check_expression の型に変換できる型である必要があります。
戻り値の型
check_expression と同じ型が返されます。 リテラル NULL が check_expressionとして指定されている場合、 ISNULL は replacement_valueのデータ型を返します。 リテラル NULL が check_expression として指定されていて、 replacement_value が指定されていない場合、 ISNULL は int を返します。
解説
check_expressionの値は、NULLされていない場合に返されます。 それ以外の場合、 replacement_value は、型が異なる場合に check_expressionの型に暗黙的に変換された後に返されます。
replacement_value は、replacement_value が check_expression より長い場合は切り捨てられることがあります。
Note
COALESCE を使用して、最初の null 以外の値を返します。
例
この記事のコード サンプルでは、AdventureWorks2025 または AdventureWorksDW2025 サンプル データベースを使用します。このサンプル データベースは、Microsoft SQL Server サンプルとコミュニティ プロジェクト ホーム ページからダウンロードできます。
A. AVG で ISNULL を使用する
次の例では、すべての製品の重量の平均を求めます。
50 テーブルのNULL列のすべてのWeightエントリの値Productに置き換えます。
USE AdventureWorks2022;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO
結果セットは次のとおりです。
59.79
B. ISNULL を使用する
次の例では、AdventureWorks2025 のすべての特価品について、説明、値引き率、最小数量、および最大数量を選択します。 特定の特別オファーの最大数量が NULL場合、結果セットに表示される MaxQty は 0.00。
USE AdventureWorks2022;
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 11 to 14 |
0.02 | 11 | 14 |
Volume Discount 15 to 24 |
0.05 | 15 | 24 |
Volume Discount 25 to 40 |
0.10 | 25 | 40 |
Volume Discount 41 to 60 |
0.15 | 41 | 60 |
Volume Discount over 60 |
0.20 | 61 | 0 |
Mountain-100 Clearance Sale |
0.35 | 0 | 0 |
Sport Helmet Discount-2002 |
0.10 | 0 | 0 |
Road-650 Overstock |
0.30 | 0 | 0 |
Mountain Tire Sale |
0.50 | 0 | 0 |
Sport Helmet Discount-2003 |
0.15 | 0 | 0 |
LL Road Frame Sale |
0.35 | 0 | 0 |
Touring-3000 Promotion |
0.15 | 0 | 0 |
Touring-1000 Promotion |
0.20 | 0 | 0 |
Half-Price Pedal Sale |
0.50 | 0 | 0 |
Mountain-500 Silver Clearance Sale |
0.40 | 0 | 0 |
次の例では、ISNULLを使用して、NULLのColor値を文字列Noneに置き換えます。
USE AdventureWorks2022;
GO
SELECT ProductID,
Name,
ProductNumber,
ISNULL(Color, 'None') AS Color
FROM Production.Product;
次に結果セットの一部を示します。
| ProductID | 名前 | ProductNumber | 色 |
|---|---|---|---|
| 1 | Adjustable Race |
AR-5381 | なし |
| 2 | Bearing Ball |
BA-8327 | なし |
| 3 | BB Ball Bearing |
BE-2349 | なし |
| 4 | Headset Ball Bearings |
BE-2908 | なし |
| 316 | Blade |
BL-2036 | なし |
| 317 | LL Crankarm |
CA-5965 | 黒 |
| 318 | ML Crankarm |
CA-6738 | 黒 |
| 319 | HL Crankarm |
CA-7457 | 黒 |
C: WHERE 句で NULL をテストする
ISNULLを使用してNULL値を検索しないでください。 代わりに IS NULL を使用してください 次の例では、weight 列が NULL の製品をすべて検索しています。
IS と NULL の間にスペースがあることに注意してください。
USE AdventureWorks2022;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO
例: Azure Synapse Analytics、Analytics Platform System (PDW)
D. AVG で ISNULL を使用する
次の例では、サンプル テーブルのすべての製品の重量の平均を求めます。
50 テーブルのNULL列のすべてのWeightエントリの値Productに置き換えます。
-- Uses AdventureWorksDW
SELECT AVG(ISNULL(Weight, 50))
FROM dbo.DimProduct;
結果セットは次のとおりです。
52.88
E. ISNULL を使用する
次の例では、ISNULLを使用して列NULLのMinPaymentAmount値をテストし、それらの行の値0.00を表示します。
-- Uses AdventureWorks
SELECT ResellerName,
ISNULL(MinPaymentAmount,0) AS MinimumPayment
FROM dbo.DimReseller
ORDER BY ResellerName;
次に結果セットの一部を示します。
| ResellerName | MinimumPayment |
|---|---|
| 自転車協会 | 0.0000 |
| 自転車店 | 0.0000 |
| 自転車店 | 0.0000 |
| 偉大な自転車会社 | 0.0000 |
| 典型的な自転車店 | 200.0000 |
| 販売・サービス | 0.0000 |
F. IS NULL を使用して WHERE 句で NULL をテストする
次の例では、NULL 列が Weight の製品をすべて検索しています。
IS と NULL の間にスペースがあることに注意してください。
-- Uses AdventureWorksDW
SELECT EnglishProductName, Weight
FROM dbo.DimProduct
WHERE Weight IS NULL;