sql >> データベース >  >> RDS >> Oracle

OracleのNVL2()関数

    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"

    1. 適切なAzureVMサイズを選択することの重要性

    2. 関数からレコードのセット(仮想テーブル)を返します

    3. SQLServerテキストデータ型のWHERE句

    4. WHERE句に条件があるLEFTJOINが、ONにある同じLEFT JOINと同等ではないのはなぜですか?