SQL NULL 関数
SQL ISNULL()、NVL()、IFNULL() および COALESCE() 関数
以下の「製品」表を参照してください:
P_Id | ProductName | UnitPrice | UnitsInStock | ユニットオンオーダー |
---|---|---|---|---|
1 | ヤールスバーグ | 10.45 | 16 | 15 |
2 | マスカルポーネ | 32.56 | 23 | |
3 | ゴルゴンゾーラ | 15.67 | 9 | 20 |
「UnitsOnOrder」の場合はオプションであり、NULL 値を含めることができます。
次の SELECT ステートメントを使用します:
SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products
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
FROM Products
Oracle
Oracle には ISNULL() 関数がありません。ただし、NVL() 関数を使用しても同じ結果を得ることができます:
SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products
FROM Products
MySQL
MySQL には ISNULL のようなものもあります() 関数。ただし、Microsoft の 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