oracle保留2位小数的函数(oracle sql 查询出sum(tot)一个数字字段,想转换成保留两位TO_CHAR(sum(tot),’999,999,999.99’))

本文目录
- oracle sql 查询出sum(tot)一个数字字段,想转换成保留两位TO_CHAR(sum(tot),’999,999,999.99’)
- oracle 保留两位小数
- oracle如何用abs()处理后保留2位
oracle sql 查询出sum(tot)一个数字字段,想转换成保留两位TO_CHAR(sum(tot),’999,999,999.99’)
select to_char(0.23,’fm0.99’) from dual
第一行你写的没看明白,第二行最后少个end,第三行decode不支持这种写法,可以换成
decode(sign(sum(tot)-1),1,TO_CHAR(sum(tot),’999,999,999.99’),TO_CHAR(sum(tot),’0.99’))
oracle 保留两位小数
select to_char(trunc(字段名,2),99.99) from dual;
本来一个trunc函数就够了,但是如果把12变成12.00这样,就得再用个to_char了
oracle如何用abs()处理后保留2位
方法一:使用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
此方法的不足是,format中的小数点左面的9的个数要已知,否则会出现超过的数字显示为########的情况。
另外一个问题是,使用column时,设置生效是session级还是system级,需要注意。
也许某张表的数值列不总是要求所有的地方显示时,都是小数点后两位的格式,此时只能使用session级,但是有个数据库连接会话超时的问题,如果不是使用到system级,不建议使用该方法。

更多文章:
在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)
2026年10月11日 05:20
countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)
2026年10月11日 03:30
正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)
2026年10月11日 03:00
orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)
2026年10月10日 23:00
display的用法(display是什么意思 详解display的含义和用法)
2026年10月10日 22:00
html全部居中代码(怎么让网页居中显示,html如何让网页居中)
2026年10月10日 21:10






