oracle如何用abs()处理后保留2位

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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级,不建议使用该方法。
参考技术A oracle中abs()是取number类型数据绝对值,然后用round来指定保留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;

64位 win7 下如何用delphi连接oracle数据库?一直提示没有驱动,但是驱动又安装不上去!

用unidac,自带的驱动……否则你需要把oracle全装上…… 参考技术A 用xe版的delphi

以上是关于oracle如何用abs()处理后保留2位的主要内容,如果未能解决你的问题,请参考以下文章

如何用matlab对以下函数进行归一化处理

oracle语句中,某个段值想四舍五入,并且保留小数点的后2位,是否有函数可以直接写出来;

如何用C语言计算圆的周长和面积

如何在Oracle数据库中保留小数点后两位 而且在java中保留两位插入到数据表中

如何在Oracle数据库中保留小数点后两位 而且在java中保留两位插入到数据表中

oracle数据库中如何用sql语句查出重复字段以及如何删除?