ISNULL (Transact-SQL)
Applies to: 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 )
引数
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 以外の値を返します。
例
この記事の Transact-SQL コード サンプルは AdventureWorks2022
または AdventureWorksDW2022
サンプル データベースを使用します。このサンプル データベースは、Microsoft SQL Server サンプルとコミュニティ プロジェクトのホーム ページからダウンロードできます。
A. AVG で ISNULL を使用する
次の例では、すべての製品の重量の平均を求めます。 Product
テーブルのWeight
列のすべてのNULL
エントリの値50
に置き換えます。
USE AdventureWorks2022;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO
結果セットは次のとおりです。
59.79
B. ISNULL を使用する
次の例では、AdventureWorks2022
のすべての特価品について、説明、値引き率、最小数量、および最大数量を選択します。 特定の特別オファーの最大数量が 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
を使用して、Color
のNULL
値を文字列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 を使用する
次の例では、サンプル テーブルのすべての製品の重量の平均を求めます。 Product
テーブルのWeight
列のすべてのNULL
エントリの値50
に置き換えます。
-- Uses AdventureWorksDW
SELECT AVG(ISNULL(Weight, 50))
FROM dbo.DimProduct;
結果セットは次のとおりです。
52.88
E. ISNULL を使用する
次の例では、ISNULL
を使用して列MinPaymentAmount
の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 AdventureWorksDW
SELECT EnglishProductName, Weight
FROM dbo.DimProduct
WHERE Weight IS NULL;