Понять функцию преобразования оракула - PullRequest
0 голосов
/ 22 февраля 2019

Почему это утверждение выдает ошибку?Я удивлен, встретив ошибку

SELECT TO_CHAR(1890.55,'$9,999D99') FROM DUAL;

Спасибо!

1 Ответ

0 голосов
/ 22 февраля 2019

Это разделитель тысяч ?Сравните!

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...