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

OracleのNANVL()関数

    Oracleでは、NANVL() 関数を使用すると、NaNを処理できます 代わりに返す別の数値を指定して値を指定します。

    それが機能する方法は、2つの引数を受け入れることです。最初の引数がNaNの場合 (数値ではありません)、2番目の引数を返します。最初の引数がの場合 数値の場合、その数値を返すだけです。

    この関数は、タイプBINARY_FLOATの浮動小数点数にのみ役立つことに注意してください。 またはBINARY_DOUBLE

    構文

    構文は次のようになります:

    NANVL(n2, n1)

    各引数は、任意の数値データ型、または暗黙的に数値データ型に変換できる任意の非数値データ型にすることができます。

    NaNを生成できます ゼロフロート/ダブル値をゼロで割ることによって:

    SELECT 0f/0 
    FROM DUAL;

    結果:

       0F/0 
    _______ 
    NaN     

    ただし、NaNが必要ない場合 返されるには、NANVL()を使用できます 別の値を返す関数:

    SELECT NANVL(0f/0, 0) 
    FROM DUAL;

    結果:

       NANVL(0F/0,0) 
    ________________ 
    0.0             

    ここでも同じですが、今回はNaNの代わりに返す別の値を指定します :

    SELECT NANVL(0f/0, 123) 
    FROM DUAL;

    結果:

       NANVL(0F/0,123) 
    __________________ 
    123.0              

    NaN 浮動小数点リテラル

    Oracleは、数値リテラルとして表現できない状況のために、いくつかの浮動小数点リテラルも提供しています。これらには、binary_float_nanが含まれます これは、タイプBINARY_FLOATの値を表します 条件IS NAN trueであり、binary_double_nan 、タイプBINARY_DOUBLEの値を表します 条件IS NAN 本当です。

    代わりに、これらの浮動小数点リテラルを使用する例を次に示します。

    SELECT 
        NANVL(binary_double_nan, 0), 
        NANVL(binary_float_nan, 0)
    FROM DUAL;

    結果:

       NANVL(BINARY_DOUBLE_NAN,0)    NANVL(BINARY_FLOAT_NAN,0) 
    _____________________________ ____________________________ 
    0.0                           0.0                         

    番号を渡す

    前述のように、最初の引数が数値の場合、その数値を返します。

    SELECT NANVL(33, 0) 
    FROM DUAL;

    結果:

       NANVL(33,0) 
    ______________ 
                33 

    非数値引数

    引数は、任意の数値データ型、または暗黙的に数値データ型に変換できる任意の非数値データ型にすることができます。

    引数がその基準を満たさない場合に何が起こるかの例を次に示します。

    SELECT NANVL('Gosh', 'Dang')
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT NANVL('Gosh', 'Dang')
    FROM DUAL
    Error report -
    ORA-01722: invalid number

    ヌル引数

    NANVL() nullを返します 引数がnullの場合 :

    SET NULL 'null';
    
    SELECT 
        NANVL(null, 16),
        NANVL(1024, null),
        NANVL(null, null)
    FROM DUAL;

    結果:

       NANVL(NULL,16)    NANVL(1024,NULL)    NANVL(NULL,NULL) 
    _________________ ___________________ ___________________ 
                 null                null                null 

    デフォルトでは、SQLclおよびSQL * Plusは、SQL SELECTの結果としてnull値が発生するたびに空白を返します。 声明。

    ただし、SET NULLは使用できます 返される別の文字列を指定します。ここでは、文字列nullを指定しました 返却する必要があります。

    引数がありません

    NANVL()の呼び出し 引数がないとエラーが発生します:

    SELECT NANVL()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT NANVL()
    FROM DUAL
    Error at Command Line : 1 Column : 8
    Error report -
    SQL Error: ORA-00909: invalid number of arguments
    00909. 00000 -  "invalid number of arguments"
    *Cause:    
    *Action:

    また、引数が多すぎる場合にも同じことが当てはまります。

    SELECT NANVL(10, 2, 3)
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT NANVL(10, 2, 3)
    FROM DUAL
    Error at Command Line : 1 Column : 8
    Error report -
    SQL Error: ORA-00909: invalid number of arguments
    00909. 00000 -  "invalid number of arguments"
    *Cause:    
    *Action:

    1. 1から100までの数値のリストを生成するSQL

    2. 複数のID値を受け入れるT-SQLストアドプロシージャ

    3. PostgreSQLでパーセンタイルを計算する方法

    4. TDSサーバー-Transact-SQL(T-SQL)ステートメントを使用してSQLServerでSalesforceデータを操作する