【发布时间】:2013-11-26 16:00:13
【问题描述】:
我有一个表格,其中的数字存储为varchar2,带有“。”作为小数点分隔符(例如“5.92843”)。
我想使用“,”来计算这些数字,因为这是系统默认值,并且使用了以下to_number 来执行此操作:
TO_NUMBER(number,'99999D9999','NLS_NUMERIC_CHARACTERS = ''.,''')
我的问题是一些数字可能很长,因为字段是VARCHAR2(100),当它比我定义的格式长时,我的to_number 失败并显示ORA-01722。
有什么方法可以定义动态数字格式吗? 只要我能设置十进制字符,我并不关心格式。
【问题讨论】:
-
这个问题的好解决方案:stackoverflow.com/a/4143834/603516
-
偶然地,今天我为这个问题找到了一个更简单的解决方案(请参阅我的答案)。抱歉 - 这对解决此问题没有帮助:虽然“TM9”适用于 TO_CHAR,但不适用于 TO_NUMBER。