Sql 数字掩蔽&;nls_参数

Sql 数字掩蔽&;nls_参数,sql,oracle,number-formatting,Sql,Oracle,Number Formatting,所以我有一个疑问: SELECT ROUND(SUM(COLUMN1*(COLUMN3-COLUMN2)),2) FROM .... WHERE .... 编辑:四舍五入到2位小数 它返回此格式-示例: 5.25 231.12 .92 (预期输出:0,00): 那么,我如何才能正确地掩盖这一点呢 SELECT ROUND( to_number(SUM(COLUMN1*(COLUMN3-COLUMN2)),'[FORMAT_MASK]', '[NLS_PARAM=]') ,0) 使

所以我有一个疑问:

SELECT ROUND(SUM(COLUMN1*(COLUMN3-COLUMN2)),2) FROM .... WHERE ....
编辑:四舍五入到2位小数

它返回此格式-示例:

  5.25
231.12
   .92
(预期输出:0,00):

那么,我如何才能正确地掩盖这一点呢

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

使用
来指定格式模型中的十进制字符
D

当会话的
NLS\u数字\u字符
默认为
,.
(“十进制字符组分隔符”)或您已使用

alter session set NLS_NUMERIC_CHARACTERS = ',.'; 

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

231,12
您可以通过将
NLS\u数字\u字符
指定为第三个参数来改变行为

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

231,12

由于值
0,92
,我在格式_mask->
'9990d99'
中添加了一个
0
。很好用。谢谢你,伙计!
select to_char(231.12, '99999D99','NLS_NUMERIC_CHARACTERS='',.''')  from dual;

231,12