SQL NULL関数
SQL IFNULL()、ISNULL()、COALESCE()、およびNVL()関数
次の「製品」表を見てください。
P_ID |
商品名 |
単価 |
在庫数 |
注文単位 |
---|---|---|---|---|
1 | ヤールスベルク | 10.45 | 16 | 15 |
2 | マスカルポーネ | 32.56 | 23 | |
3 | ゴルゴンゾーラ | 15.67 | 9 | 20 |
「注文単位」列はオプションで、NULL値が含まれている可能性があるとします。
次のSELECTステートメントを見てください。
SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products;
上記の例では、「注文単位」値のいずれかがNULLの場合、結果はNULLになります。
ソリューション
MySQL
MySQLIFNULL()
関数を使用すると、式がNULLの場合に代替値を返すことができます。
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;
または、COALESCE()
関数、次のように
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;
SQLサーバー
SQLサーバーISNULL()
関数を使用すると、式がNULLの場合に代替値を返すことができます。
SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products;
または、COALESCE()
関数、次のように
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;
MS Access
MS AccessIsNull()
関数は、式がnull値の場合はTRUE(-1)を返し、それ以外の場合はFALSE(0)を返します。
SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products;
Oracle
Oracle NVL()
関数は同じ結果を達成します。
SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products;
または、COALESCE()
関数、次のように
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。