Oracle 如何保留两位小数 如0.00
通常我们可以使用如下的方法来实现
select round('1.226',2) as aa from dual select trunc('1.226',2) as aa from dual
这样分别会显示处 1.23和1.22
但是如果是如下的语句
select round(0.2,2) as aa from dual select trunc(0.2,2) as aa from dual
你会发现结果是0.2和0.2
并不能满足我们的要求,并且某些时候打印的结果还可能是 .2 和 .2
后面我想到是否可以用to_char函数去实现,于是就有了下面的语句
select decode(ceil(0.899),'1','0'||trim(to_char(0.899,'999999999999999.99')),'0','0'||trim(to_char(0.899,'999999999999999.99')),trim(to_char(0.899,'999999999999999.99'))) as aa from dual union select decode(ceil(0),'1','0'||trim(to_char(0,'999999999999999.99')),'0','0'||trim(to_char(0,'999999999999999.99')),trim(to_char(0,'999999999999999.99'))) as aa from dual union select decode(ceil(12.2354),'1','0'||trim(to_char(12.2354,'999999999999999.99')),'0','0'||trim(to_char(12.2354,'999999999999999.99')),trim(to_char(12.2354,'999999999999999.99'))) as aa from dual
上面的语句 分别会显示出
0.90,0.00,12.24
需要注意的是
ceil(0.899)
此时返回1,如果参数0,返回的是0,当然我这里还可以简化,如使用floor这个函数
select decode(floor(0.899),'0','0'||trim(to_char(0.899,'999999999999999.99')),trim(to_char(0.899,'999999999999999.99'))) as aa from dual union select decode(floor(0),'0','0'||trim(to_char(0,'999999999999999.99')),trim(to_char(0,'999999999999999.99'))) as aa from dual union select decode(floor(12.2354),'0','0'||trim(to_char(12.2354,'999999999999999.99')),trim(to_char(12.2354,'999999999999999.99'))) as aa from dual
结果一样
0.90,0.00,12.24
这样基本上满足我的要求了
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情