SQL NULL 関数

SQL ISNULL()、NVL()、IFNULL()、COALESCE()関数

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

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 コンピュータ 699 25 15
2 プリンター 365 36  
3 電話 280 159 57

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

以下のSELECT文を使用しています:

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

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

マイクロソフトの ISNULL() 関数は NULL 値の処理方法を指定します。

NVL(), IFNULL(), COALESCE() 関数も同じ結果を得ることができます。

ここでは、NULL 値が 0 に設定したいです。

ここでは、"UnitsOnOrder" が NULL である場合、計算に不都合が生じるため、NULL の値が 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() 関数もあり、ただし、マイクロソフトの ISNULL() 関数とは少し異なります。

MySQL では、IFNULL() 関数を使用してこんな感じで:

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

または、COALESCE() 関数を使用してこんな感じで:

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