SQL ISNULL()、NVL()、IFNULL()、および COALESCE() 関数

以下の「Products」テーブルを参照してください:

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 computer 699 25 15
2 printer 365 36
3 telephone 280 159 57

「UnitsOnOrder」がオプションであり、NULL 値を含めることができる場合。

次の SELECT ステートメントを使用します。

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products

上記の例では、「UnitsOnOrder」値が NULL の場合、結果は NULL になります。

Microsoft の ISNULL() 関数は、NULL 値の処理方法を指定するために使用されます。

NVL()、IFNULL()、COALESCE() 関数でも同じ結果が得られます。

ここでは、NULL 値を 0 にします。

以下では、「UnitsOnOrder」が NULL の場合、計算に悪影響を与えるため、値が NULL の場合、ISNULL() は 0 を返します。

SQL Server / MS Access

SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products

Oracle

Oracle には ISNULL() 関数がありません。 ただし、NVL() 関数を使用して同じ結果を得ることができます。

SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products

MySQL

MySQL にも ISNULL() に似た関数があります。 ただし、Microsoft の ISNULL() 関数とは動作が少し異なります。

MySQL では、次のように IFNULL() 関数を使用できます。

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

または、次のように COALESCE() 関数を使用することもできます。

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products