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: