次の方法で共有

Facebook x.com LinkedIn 電子メール

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を指定した置換値に置き換えます。

Transact-SQL 構文表記規則

構文

ISNULL ( check_expression , replacement_value )

引数

check_expression

NULLをチェックします。 check_expression は任意のデータ型です。

replacement_value

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

戻り値の型

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

解説

check_expressionの値は、NULLされていない場合に返されます。 それ以外の場合、 replacement_value は、型が異なる場合に check_expressionの型に暗黙的に変換された後に返されます。 replacement_value は、replacement_valuecheck_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場合、結果セットに表示される MaxQty0.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を使用して、NULLColor値を文字列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 の製品をすべて検索しています。 ISNULL の間にスペースがあることに注意してください。

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を使用して列NULLMinPaymentAmount値をテストし、それらの行の値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 の製品をすべて検索しています。 ISNULL の間にスペースがあることに注意してください。

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

  • Last updated on 2025年11月19日