最新のWeb開発のチュートリアル
 

SQL NULL機能


SQL ISNULL() NVL() IFNULL()およびCOALESCE()関数

以下を見て"Products"テーブル:

P_ID 商品名 単価 在庫] UnitsOnOrder
1 ヤールスベルグ 10.45 16 15
2 マスカルポーネ 32.56 23
3 ゴルゴンゾーラ 15.67 9 20

仮定"UnitsOnOrder"列はオプションで、NULL値が含まれる場合があります。

私たちは、次のSELECT文を持っています:

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products

いずれかの場合は、上記の例では、 "UnitsOnOrder"の値がNULLの場合、結果はNULLです。

MicrosoftのISNULL()関数は、我々はNULL値を処理する方法を指定するために使用されます。

NVL() IFNULL()およびCOALESCE()関数は、同じ結果を達成するために使用することができます。

このケースでは、NULL値がゼロになりたいです。

場合は、以下、 "UnitsOnOrder" NULLであるため、それは、計算に害を与えないISNULL()値がNULLの場合はゼロを返します。

MS Access

SELECT ProductName,UnitPrice*(UnitsInStock+IIF(ISNULL(UnitsOnOrder),0,UnitsOnOrder))
FROM Products

SQL Server

SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products

Oracle

OracleはありませんISNULL()関数を。 しかし、我々が使用することができますNVL()と同じ結果を達成するための機能を:

SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products

MySQL

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