以下の「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 を返します。
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0)) FROM Products
Oracle には ISNULL() 関数がありません。 ただし、NVL() 関数を使用して同じ結果を得ることができます。
SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0)) FROM Products
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