Oracle TO_NUMBER传递格式时出现问题

pnwntuvh  于 2022-11-03  发布在  Oracle
关注(0)|答案(1)|浏览(184)

我有以下情况。
我尝试使用TO_NUMBER,如下所示:
SELECT TO_NUMBER('$123,456.789','$999,999G999D999') FROM DUAL;
我得到
`

ORA-01481: invalid number format model
01481. 00000 -  "invalid number format model"

* Cause:    The user is attempting to either convert a number to a string

           via TO_CHAR or a string to a number via TO_NUMBER and has
           supplied an invalid number format model parameter.

* Action:   Consult your manual.

`
我记得我在什么地方读到过,在传递格式时,不可能将G和D与.和.混合使用,但实际上找不到任何正式的Oracle文档来证实这一点。
如果有人能澄清这种情况,或者给我指一篇文章或线程,我可以阅读有关它,我将非常感激,因为我无法找到任何东西。也许我的谷歌搜索需要一点帮助:)

sf6xfgos

sf6xfgos1#

请在以下各处使用GD

SELECT TO_NUMBER('$123,456.789','$999G999G999D999') AS value FROM DUAL;

如果需要,可以显式指定NLS_NUMERIC_CHARACTERS设置:

SELECT TO_NUMBER(
         '$123,456.789',
         '$999G999G999D999',
         'NLS_NUMERIC_CHARACTERS=.,'
       ) AS value
FROM   DUAL;

或者在全文中使用,.

SELECT TO_NUMBER('$123,456.789','$999,999,999.999') AS value FROM DUAL;

其中全部输出:
| 价值|
| - -|
| 123456.789美元|
fiddle

相关问题