Oracle TO_NUMBER() 函数使用指南

Oracle TO_NUMBER() 是一个内置函数,它将给定的参数转换为 NUMBER 数据类型的值。

Oracle TO_NUMBER() 语法

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

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

参数

expr

必需的。 它可以是任何表达式,它计算为 CHARVARCHAR2NCHARNVARCHAR2 类型的字符字符串、NUMBERBINARY_FLOATBINARY_DOUBLE 类型的数值,或 null。

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_NUMBER() 函数返回一个 NUMBER 数据类型的值。

如果 exprNUMBER,则函数返回 expr。如果 expr 的计算结果为 null,则函数返回 null。否则,函数将 expr 转换为 NUMBER 值。

  • 如果你指定的 exprCHARVARCHAR2NCHARNVARCHAR2 数据类型的,则可以选择指定格式模型 fmt
  • 如果你指定的 exprBINARY_FLOATBINARY_DOUBLE 数据类型的,则无法指定格式模型,因为浮点数只能通过其内部表示来解释。

此函数不直接支持 CLOB 数据。但是,可以通过隐式数据转换将 CLOB 作为参数传递。

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

Oracle TO_NUMBER() 示例

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

基本用法

SELECT TO_NUMBER('100.00')
FROM dual;

输出:

   TO_NUMBER('100.00')
______________________
                   100

格式

对于一些带有千分位的数字,如果您直接转化为数值,Oracle 会报告一个错误:

SELECT TO_NUMBER('1,234,567.89')
FROM dual;

输出:

SQL Error: ORA-01722: invalid number
01722. 00000 -  "invalid number"
*Cause:    The specified number was invalid.
*Action:   Specify a valid number.

Oracle TO_NUMBER() 函数允许您指定输入数值的格式:

SELECT TO_NUMBER('1,234,567.89', '9G999G999D99')
FROM dual;

输出:

   TO_NUMBER('1,234,567.89','9G999G999D99')
___________________________________________
                                 1234567.89

NULL 参数

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

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

输出:

   TO_NUMBER(NULL)
__________________
              NULL

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

结论

Oracle TO_NUMBER() 是一个内置函数,它将给定的参数转换为 NUMBER 数据类型的值。