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: