Oracle Databaseでは、NULLIF()
関数は2つの式を比較し、null
を返します 両方の式が等しい場合。それらが等しくない場合、関数は最初の式を返します。
構文
構文は次のようになります:
NULLIF(expr1, expr2)
例
デモンストレーションの例を次に示します。
SELECT NULLIF(5, 7)
FROM DUAL;
結果:
5
この場合、引数は等しくなかったため、関数は最初の引数を返しました。
両方の引数が等しい場合は、次のようになります。
SET NULL 'null';
SELECT NULLIF(7, 7)
FROM DUAL;
結果:
null
NULLIF()
であることがわかります null
を返します 両方の引数が等しい場合
最初の行についてSET NULL 'null';
、SQLclセッションがnull
を返すように追加しました 結果がnullの場合は常に。
デフォルトでは、SQLclおよびSQL * Plusは、null
の場合は常に空白を返します。 SQL SELECT
の結果として発生します 声明。
ただし、SET NULL
は使用できます 返される別の文字列を指定します。ここでは、文字列null
を指定しました 返却する必要があります。
CASE
との比較
NULLIF()
関数は、次のCASE
と同等です。 式:
CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
無効な引数カウント
引数を渡さずに関数を呼び出すと、エラーが発生します:
SELECT NULLIF()
FROM DUAL;
結果:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
また、あまりにも多くの引数を渡すとエラーが発生します:
SELECT NULLIF(1, 2, 3)
FROM DUAL;
結果:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"