ISNULL (Transact-SQL)

NULL 値を、指定された値に置き換えます。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

ISNULL ( check_expression , replacement_value )

引数

  • check_expression
    NULL かどうかを調べるです。 check_expression は任意のデータ型です。

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

戻り値の型

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 より長い場合は切り捨てることができます。

注意

最初の null 以外の値を返すには、COALESCE (Transact-SQL) を使用します。

使用例

A. AVG で ISNULL を使用する

次の例では、すべての製品の重量の平均を求めます。 Product テーブルの Weight 列にあるすべての NULL エントリに、値 50 を代入します。

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

以下に結果セットを示します。

Description       DiscountPct       MinQty      Max Quantity

---------------   -------------     --------    ---------------

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

関連項目

参照

式 (Transact-SQL)

IS [NOT] NULL (Transact-SQL)

システム関数 (Transact-SQL)

WHERE (Transact-SQL)

COALESCE (Transact-SQL)