📜  oracle to_number - SQL (1)

📅  最后修改于: 2023-12-03 14:44:55.984000             🧑  作者: Mango

Oracle 的 to_number 函数

在 Oracle 数据库中,to_number 函数用于将字符串数据转换为数字类型。它的基本语法如下:

to_number(string, [format_mask], [nls_parameters])

其中,参数的含义如下:

  • string:需要转换为数字类型的字符串。它可以包含数字、小数点、正负号等字符。
  • format_mask(可选):用于指定 string 参数中数字的格式,例如小数点的位置、千位分隔符等。如果不指定,Oracle 将根据当前会话的 NLS 配置信息自动识别格式。
  • nls_parameters(可选):用于指定数字的格式化方式、日期格式等 NLS(National Language Support)参数。如果不指定,Oracle 将使用当前会话的 NLS 配置信息。

下面是一些例子。

  • 将字符串转换为整数:
SELECT to_number('12345') as num FROM dual;
-- OUTPUT: 12345
  • 将字符串转换为浮点数:
SELECT to_number('123.45') as num FROM dual;
-- OUTPUT: 123.45
  • 指定格式掩码,将字符串转换为日期类型:
SELECT to_number('20220101', 'YYYYMMDD') as num FROM dual;
-- OUTPUT: 20220101
  • 指定 NLS 参数,将字符串转换为使用英文格式的浮点数:
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,';
SELECT to_number('1234.56', '9999D99', 'NLS_NUMERIC_CHARACTERS='',.''') as num FROM dual;
-- OUTPUT: 1234.56

需要注意的是,如果 string 参数无法正确转换为数字类型,to_number 函数将会抛出异常。此外,如果没有正确指定格式掩码或 NLS 参数,也会导致转换不成功。因此,在使用 to_number 函数时,需要注意这些细节。