oracle小数点保留问题是什么?
最近公司有个业务清单提取需求,需要使用百分率,保留2位小数,其实只用round就可以实现(round(_data,2) ),但是格式不是很工整,对格式要求不严谨的情况下使用round即可,以下是网络搜索到的处理方法:
方法一:使用to_char的fm格式,即:
to_char(round(data。 amount,2),'FM9999999999999999。00') as amount
不足之处是,如果数值是0的话,会显示为。00而不是0。00。
另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字会显示为n个符号“#”。
解决方式如下:
select decode(s...全部
最近公司有个业务清单提取需求,需要使用百分率,保留2位小数,其实只用round就可以实现(round(_data,2) ),但是格式不是很工整,对格式要求不严谨的情况下使用round即可,以下是网络搜索到的处理方法:
方法一:使用to_char的fm格式,即:
to_char(round(data。
amount,2),'FM9999999999999999。00') as amount
不足之处是,如果数值是0的话,会显示为。00而不是0。00。
另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字会显示为n个符号“#”。
解决方式如下:
select decode(salary,0,'0。00',(to_char(round(salary,2),'fm99999999999999。00'))) from can_do;
方法二:使用case when then else end进行各种情况的判断处理:
case
when instr(to_char(data。
amount), '。') < 1 then
data。amount || '。00'
when instr(to_char(data。amount), '。') + 1 = length(data。
amount) then
data。amount || '0'
else
to_char(round(data。amount, 2))
end as amount_format
方法三:可以使用Oracle自带的参数设置,即
column amount format l9999999999。
99。收起