使用TO_NUMBER解析固定记数法和科学记数法中的数字

问题描述 投票:4回答:1

使用Oracle SQL,当字符串(VARCHAR2列)可以包含以下任意一个时,如何将字符串转换为数字:

  • 固定格式的数字,例如-11.496606820938826

    SELECT TO_NUMBER('-11.496606820938826', '999.999999999999999999', 'NLS_NUMERIC_CHARACTERS=''. ''') FROM DUAL;
    
  • 科学计数形式的数字,例如-4.0504035245989348E-3

    SELECT TO_NUMBER('-4.0504035245989348E-3', '999.999999999999999999EEEE', 'NLS_NUMERIC_CHARACTERS=''. ''') FROM DUAL;
    

到目前为止,我已经使用以下format models

  • 固定符号:999.999999999999999999
  • 科学符号:999.999999999999999999EEEE

但我找不到两种情况都可行的单一格式模型。

示例数据:

 STRING_VALUE
------------------------
 -4.0504035245989348E-3 
 -11.496606820938826    
------------------------

我正在使用Oracle 12.1,所以我既不能使用VALIDATE_CONVERSION也不能使用ON CONVERSION ERROR

编辑

此外,此代码将在具有不同NLS设置的不同环境上运行;我不能认为在没有格式模型的情况下使用TO_NUMBER就行了。

sql oracle oracle12c number-formatting string-parsing
1个回答
1
投票

如何使用TO_NUMBER语句?

CASE
© www.soinside.com 2019 - 2024. All rights reserved.