次の方法で共有


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

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 以外の値を返します。

この記事の 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場合、結果セットに表示される 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を使用して、ColorNULL値を文字列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 を使用する

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

-- Uses AdventureWorksDW

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

結果セットは次のとおりです。

52.88

E. ISNULL を使用する

次の例では、ISNULLを使用して列MinPaymentAmountNULL値をテストし、それらの行の値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 AdventureWorksDW

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