Маскировка чисел & nls_parameter - PullRequest
0 голосов
/ 11 декабря 2018

Итак, у меня есть запрос:

SELECT ROUND(SUM(COLUMN1*(COLUMN3-COLUMN2)),2) FROM .... WHERE ....

РЕДАКТИРОВАТЬ: КРУГЛЫЙ до 2 десятичных знаков.

Возвращает этот формат - пример:

  5.25
231.12
   .92

(ожидаемый результат: # ##0,00):

  5,25
231,12
  0,92

Итак, как мне правильно замаскировать это?

SELECT ROUND(
to_number(SUM(COLUMN1*(COLUMN3-COLUMN2)),'[FORMAT_MASK]', '[NLS_PARAM=]')
,0)

1 Ответ

0 голосов
/ 11 декабря 2018

Используйте TO_CHAR, указав соответствующий десятичный символ D в модели формата

Когда NLS_NUMERIC_CHARACTERS вашей сессии равен ,. (" decimal_character group_separator ") по умолчанию иливы установили его вручную, используя

alter session set NLS_NUMERIC_CHARACTERS = ',.'; 

select to_char(231.12, '99999D99')  from dual;

, отображает

231,12

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

select to_char(231.12, '99999D99','NLS_NUMERIC_CHARACTERS='',.''')  from dual;

231,12

Демо

...