号码屏蔽 & nls_parameter

Number masking & nls_parameter

所以我有一个问题:

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

编辑: 舍入到两位小数。

它returns这种格式-例子:

  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)

使用 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

Demo