TO_BINARY_DOUBLE
構文
目的
TO_BINARY_DOUBLE
は、expr
を倍精度浮動小数点数に変換します。
-
expr
は、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
の型の文字列、NUMBER
、BINARY_FLOAT
、BINARY_DOUBLE
またはBOOLEAN
の型の数値、あるいはNULLと評価される任意の式にすることができます。expr
がBINARY_DOUBLE
の場合、このファンクションはexpr
を戻します。expr
がNULLと評価されると、ファンクションはNULLを戻します。それ以外の場合は、expr
がBINARY_DOUBLE
値に変換されます。 -
オプションの
DEFAULT
return_value
ON
CONVERSION
ERROR
句により、expr
からBINARY_DOUBLE
への変換中にエラーが発生した場合にこのファンクションで戻される値を指定できます。expr
を評価するときにエラーが発生した場合、この句による影響はありません。return_value
は式またはバインド変数にすることができ、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
の型の文字列、NUMBER
、BINARY_FLOAT
またはBINARY_DOUBLE
の型の数値、あるいはNULLと評価される必要があります。expr
をBINARY_DOUBLE
に変換する場合と同じ方法で、return_value
がBINARY_DOUBLE
に変換されます。return_value
をBINARY_DOUBLE
に変換できない場合は、エラーが戻されます。 -
オプションの'
fmt
'引数および'nlsparam
'引数の用途は、TO_NUMBER
ファンクションと同じです。これらの引数を指定した場合は、expr
とreturn_value
(指定した場合)は、それぞれ文字列またはNULLにする必要があります。いずれかが文字列である場合は、fmt
引数とnlsparam
引数が使用されて、文字列がBINARY_DOUBLE
値に変換されます。
expr
またはreturn_value
が次の文字列に評価される場合、これらは次のように変換されます。
-
文字列'
INF
'(大/小文字は区別されない)は、正の無限大に変換されます。 -
文字列'-
INF
'(大/小文字は区別されない)は、負の無限大に変換されます。 -
文字列'
NaN
'(大/小文字は区別されない)は、NaN
(非数値)に変換されます。
expr
文字列には、浮動小数点数の書式要素(F
、f
、D
またはd
)は使用できません。
文字列またはNUMBER
からBINARY_DOUBLE
への変換は、正確に行われない場合があります。これは、NUMBER
および文字列型では10進精度、BINARY_DOUBLE
では2進精度を使用して数値を表現するためです。
BINARY_FLOAT
からBINARY_DOUBLE
への変換は正確に行われます。
BOOLEAN
型のexpr
を指定した場合、TRUE
は1に変換され、FALSE
は0に変換されます。
関連項目:
「TO_CHAR (数値)」および「浮動小数点数」を参照してください。
例
次の例では、それぞれ異なる数値データ型の3つの列を持つ次の表を使用します。
CREATE TABLE float_point_demo (dec_num NUMBER(10,2), bin_double BINARY_DOUBLE, bin_float BINARY_FLOAT); INSERT INTO float_point_demo VALUES (1234.56,1234.56,1234.56); SELECT * FROM float_point_demo; DEC_NUM BIN_DOUBLE BIN_FLOAT ---------- ---------- ---------- 1234.56 1.235E+003 1.235E+003
次の例では、NUMBER
データ型の値をBINARY_DOUBLE
データ型の値に変換します。
SELECT dec_num, TO_BINARY_DOUBLE(dec_num) FROM float_point_demo; DEC_NUM TO_BINARY_DOUBLE(DEC_NUM) ---------- ------------------------- 1234.56 1.235E+003
次の例では、dec_num
列およびbin_double
列から抽出されたダンプ情報を比較します。
SELECT DUMP(dec_num) "Decimal", DUMP(bin_double) "Double" FROM float_point_demo; Decimal Double --------------------------- --------------------------------------------- Typ=2 Len=4: 194,13,35,57 Typ=101 Len=8: 192,147,74,61,112,163,215,10
次の例では、指定した式をBINARY_DOUBLE
値に変換できないため、デフォルト値の0
が戻されます。
SELECT TO_BINARY_DOUBLE('2oo' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL; Value ---------- 0