TECH I.S.

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;



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細