SQL NULL関数
SQL ISNULL()、NVL()、IFNULL() および COALESCE() 関数
以下の "Products" テーブルを見てください:
| P_Id | ProductName | UnitPrice | UnitsInStock | UnitsOnOrder |
|---|---|---|---|---|
| 1 | Jarlsberg | 10.45 | 16 | 15 |
| 2 | Mascarpone | 32.56 | 23 | |
| 3 | Gorgonzola | 15.67 | 9 | 20 |
"UnitsOnOrder" がオプションであり、NULL 値を含むことができるとします。
以下の SELECT 文を使用します:
SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products
FROM Products
上記の例では、"UnitsOnOrder" 値が NULL の場合、結果は NULL になります。
マイクロソフトの ISNULL() 関数は、NULL 値の処理方法を指定するために使用されます。
NVL()、IFNULL()、COALESCE() 関数でも同じ結果を得ることができます。
ここでは、NULL 値を 0 にしたいとします。
次に、"UnitsOnOrder" が NULL の場合、ISNULL() は値が NULL なら 0 を返すため、計算に影響しません:
SQL Server / MS Access
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
FROM Products
Oracle
Oracle には ISNULL() 関数はありません。ただし、NVL() 関数を使用して同じ結果を得ることができます:
SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products
FROM Products
MySQL
MySQL にも ISNULL() に似た関数があります。ただし、その動作はマイクロソフトの ISNULL() 関数とは少し異なります。
MySQL では、次のように IFNULL() 関数を使用できます:
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
FROM Products
または、次のように COALESCE() 関数を使用できます:
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products
FROM Products
その他の拡張