NULLIF
構文
目的
NULLIF
は、expr1
とexpr2
を比較します。式が等しい場合、関数はNULLを返します。異なる場合は、expr1
を戻します。expr1
には、リテラルNULL
を指定できません。
両方の引数が数値データ型である場合、Oracle Databaseは、数値の優先順位が高い方の引数を判断し、残りの引数をそのデータ型に暗黙的に変換して、そのデータ型を戻します。2つの引数が数値ではない場合、それらのデータ型が同じである必要があります。データ型が異なる場合、Oracleはエラーを戻します。
NULLIF
ファンクションは、次のCASE
式と論理的に同じです。
CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
関連項目:
-
「CASE式」
-
expr
の文字をexpr2
の文字と比較するためにNULLIF
で使用する照合を定義する照合決定ルール、およびこのファンクションの戻り値が文字値である場合に、それに割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
例
次の例では、サンプル・スキーマhr
から、雇用後に職種が変更した従業員を検索します。これは、employees
表の現行のjob_id
がjob_history
表のjob_id
と異なるかどうかによって識別されます。
SELECT e.last_name, NULLIF(j.job_id, e.job_id) "Old Job ID" FROM employees e, job_history j WHERE e.employee_id = j.employee_id ORDER BY last_name, "Old Job ID"; LAST_NAME Old Job ID ------------------------- ---------- De Haan IT_PROG Hartstein MK_REP Kaufling ST_CLERK Kochhar AC_ACCOUNT Kochhar AC_MGR Raphaely ST_CLERK Taylor SA_MAN Taylor Whalen AC_ACCOUNT Whalen