произвольный числовой формат plsql - PullRequest
4 голосов
/ 08 апреля 2009

Я пытаюсь отформатировать числовое значение всегда в формате "9 999,99" (обратите внимание на пробел).

Проблема в том, что oracle не предоставляет мне числовую маску для получения этого формата.

Самое близкое, что я получаю, - к to_char (значение, '99990,99'), но нельзя поставить этот пробел после третьей цифры.

несколько примеров того, что я хотел бы получить 1345,67 -> 1 345,67 12356,00 -> 12 356,00 0,56 -> 0,56

Как я мог сделать это, возможно, используя регулярное выражение ?? есть идеи?

1 Ответ

6 голосов
/ 08 апреля 2009
SQL> alter session set nls_numeric_characters = ', '
  2  ;

Session altered.

SQL> select to_char(999999/100, '9G999D99')
  2    from dual;

TO_CHAR(9
---------
 9 999,99

Вы также можете указать параметр NLS_NUMERIC_CHARACTERS в операторе TO_CHAR, а не устанавливать его на уровне сеанса

  1  select to_char(999999/100, '9G999D99', 'nls_numeric_characters='', '' ')
  2*   from dual
SQL> /

TO_CHAR(9
---------
 9 999,99
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...