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
-
必需的。 它可以是任何表达式,它计算为
CHAR
、VARCHAR2
、NCHAR
或NVARCHAR2
类型的字符字符串、NUMBER
、BINARY_FLOAT
或BINARY_DOUBLE
类型的数值,或 null。 DEFAULT return_value ON CONVERSION ERROR
-
可选的。它允许您指定在转换发生错误时返回的值。
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'
-
可选的。您可以使用这个
'NLS_DATE_LANGUAGE = language'
形式设置此参数,其中language
是语言名称。
返回值
Oracle TO_NUMBER()
函数返回一个 NUMBER
数据类型的值。
如果 expr
是 NUMBER
,则函数返回 expr
。如果 expr
的计算结果为 null,则函数返回 null。否则,函数将 expr
转换为 NUMBER
值。
- 如果你指定的
expr
是CHAR
、VARCHAR2
、NCHAR
或NVARCHAR2
数据类型的,则可以选择指定格式模型fmt
。 - 如果你指定的
expr
是BINARY_FLOAT
或BINARY_DOUBLE
数据类型的,则无法指定格式模型,因为浮点数只能通过其内部表示来解释。
此函数不直接支持 CLOB
数据。但是,可以通过隐式数据转换将 CLOB
作为参数传递。
如果任意一个参数为 NULL
, TO_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 参数
如果任意一个参数为 NULL
, TO_NUMBER()
将返回 NULL
。
SET NULL 'NULL';
SELECT
TO_NUMBER(NULL)
FROM dual;
输出:
TO_NUMBER(NULL)
__________________
NULL
在本示例中,我们使用 SET NULL 'NULL';
语句将 NULL
值显示为 'NULL'
字符串。
结论
Oracle TO_NUMBER()
是一个内置函数,它将给定的参数转换为 NUMBER
数据类型的值。