Oracle TO_BINARY_DOUBLE() 函数使用指南

Oracle TO_BINARY_DOUBLE() 是一个内置函数,它将给定的表达式转换为双精度浮点数。

Oracle TO_BINARY_DOUBLE() 语法

这里是 Oracle TO_BINARY_DOUBLE() 函数的语法:

TO_BINARY_DOUBLE(expr [ DEFAULT return_value ON CONVERSION ERROR ]
  [, fmt [, 'nlsparam' ] ])

参数

expr

必需的。 它可以是任何表达式,它计算为 CHARVARCHAR2NCHARNVARCHAR2 类型的字符字符串、NUMBERBINARY_FLOATBINARY_DOUBLE 类型的数值,或 null。 您不能在字符字符串 expr 中使用浮点数格式元素 (FfDd)。

DEFAULT return_value ON CONVERSION ERROR

可选的。它允许您指定在转换发生错误时返回的值。 return_value 可以是表达式或绑定变量,并且必须计算为 CHARVARCHAR2NCHARNVARCHAR2 类型的字符字符串、NUMBERBINARY_FLOATBINARY_DOUBLE 类型的数值或 null。该函数以与将 expr 转换为 BINARY_DOUBLE 相同的方式将 return_value 转换为 BINARY_DOUBLE。如果无法将 return_value 转换为 BINARY_DOUBLE,则该函数返回错误。

fmt

可选的。格式化字符串。

'nlsparam'

可选的。您可以使用这个 'NLS_DATE_LANGUAGE = language' 形式设置此参数,其中 language 是语言名称。

返回值

Oracle TO_BINARY_DOUBLE() 函数返回一个双精度浮点数。

如果 exprBINARY_DOUBLE,则该函数返回 expr。如果 expr 计算结果为 null,则该函数返回 null。否则,该函数将 expr 转换为 BINARY_DOUBLE 值。

如果 exprreturn_value 计算为以下字符字符串,则该函数将其转换如下:

  • 不区分大小写的字符串 “INF” 转换为正无穷。
  • 不区分大小写的字符串 “-INF” 转换为负无穷。
  • 不区分大小写的字符串 “NaN” 转换为 NaN(不是数字)。

注意:

  • 从字符字符串或 NUMBERBINARY_DOUBLE 的转换可能不精确,因为 NUMBER 和字符类型使用十进制精度表示数字值,而 BINARY_DOUBLE 使用二进制精度。
  • BINARY_FLOATBINARY_DOUBLE 的转换是精确的。

Oracle TO_BINARY_DOUBLE() 示例

这里有几个展示了 Oracle TO_BINARY_DOUBLE() 函数用法的示例。

基本用法

下面的语句展示了 Oracle TO_BINARY_DOUBLE() 函数的基本用法:

SELECT
    TO_BINARY_DOUBLE(1)
FROM dual;

输出:

TO_BINARY_DOUBLE(1)
______________________
1.0

INF-INF

Oracle TO_BINARY_DOUBLE() 函数将不区分大小写的字符串 “INF” 和 “-INF” 分别转换为正无穷和负无穷。

SELECT
    TO_BINARY_DOUBLE('INF') "INF",
    TO_BINARY_DOUBLE('-INF') "-INF"
FROM dual;

输出:

INF         -INF
___________ ____________
Infinity    -Infinity

NaN

Oracle TO_BINARY_DOUBLE() 函数将不区分大小写的字符串 “NaN” 转换为 NaN(不是数字)。

SELECT
    TO_BINARY_DOUBLE('NaN') "NaN",
    TO_BINARY_DOUBLE('nan') "nan",
    TO_BINARY_DOUBLE('NAN') "NAN"
FROM dual;

输出:

NaN    nan    NAN
______ ______ ______
NaN    NaN    NaN

NULL 参数

如果任意一个参数为 NULLTO_BINARY_DOUBLE() 将返回 NULL

SET NULL 'NULL';
SELECT
    TO_BINARY_DOUBLE(NULL)
FROM dual;

输出:

TO_BINARY_DOUBLE(NULL)
_________________________
NULL

在本示例中,我们使用 SET NULL 'NULL'; 语句将 NULL 值显示为 'NULL' 字符串。

结论

Oracle TO_BINARY_DOUBLE() 是一个内置函数,它将给定的表达式转换为双精度浮点数。