Oracle Databaseでは、NVL2()
関数を使用すると、null値を別の値に置き換えることができます。
NVL()
に似ています 関数。ただし、2つではなく3つの引数を受け入れます。これにより、最初の引数がnullでない場合に返す別の値を指定できます。
構文
構文は次のようになります:
NVL2(expr1, expr2, expr3)
expr1
の場合 nullでない場合は、NVL2
expr2
を返します 。 expr1
の場合 nullの場合、NVL2
expr3
を返します 。
例
デモンストレーションの例を次に示します。
SELECT NVL2(null, 2, 3)
FROM DUAL;
結果:
3
最初の引数がnullだったため、3番目の引数が返されました。
そして、最初の引数がnullでない場合は、次のようになります。
SELECT NVL2(1, 2, 3)
FROM DUAL;
結果:
2
置換値がNullの場合
2番目または3番目の引数がnullの場合、結果がnullになる可能性があります。
例:
SET NULL '(null)';
SELECT
NVL2(1, null, 3) AS "r1",
NVL2(null, 2, null) AS "r2"
FROM DUAL;
結果:
r1 r2 _________ _________ (null) (null)
最初の行についてSET NULL '(null)';
、結果がnullの場合は常に、SQLclセッションがその値を返すように、この行を追加しました。
デフォルトでは、SQLclおよびSQL * Plusは、null
の場合は常に空白を返します。 SQL SELECT
の結果として発生します 声明。
ただし、SET NULL
は使用できます 返される別の文字列を指定します(ここで行ったように)。
無効な引数カウント
引数を渡さずに関数を呼び出すと、エラーが発生します:
SELECT NVL2()
FROM DUAL;
結果:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
また、あまりにも多くの引数を渡すとエラーが発生します:
SELECT NVL2(1, 2, 3, 4)
FROM DUAL;
結果:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"