Это разделитель тысяч ?Сравните!
SQL> SELECT TO_CHAR(1890.55,'$9,999D99') FROM DUAL;
SELECT TO_CHAR(1890.55,'$9,999D99') FROM DUAL
*
ERROR at line 1:
ORA-01481: invalid number format model
SQL> SELECT TO_CHAR(1890.55,'$9G999D99') FROM DUAL;
TO_CHAR(18
----------
$1.890,55
SQL>
[РЕДАКТИРОВАТЬ]
Вы должны знать, какой символ представляет разделитель тысяч, а какой символ десятичной запятой.Если вы включите еще один параметр в функцию TO_NUMBER
- NLS_NUMERIC_CHARACTERS
и установите его так, чтобы он отражал преобразовываемое вами значение, тогда он работает :
SQL> select TO_NUMBER('30470.73', '99999D99', 'nls_numeric_characters=''.,''') res
2 from dual;
RES
----------
30470,73
SQL>