Oracle TO_CHAR函数格式化数字(以及小数点前0丢失问题)

针对数字的常用格式化符

常用数字格式化符
参数示例说明
9999存在数字显示数字,不存在显示空格
0000存在数字显示数字,不存在显示0
.99.99指定位置返回小数点
999,999,999指定位置返回逗号
FMFM999,999,99.00如果是因为9带来的空格则删除
$

FM$999,999,99.00

数字开头返回一个美元符号

 

 

 

 

 

 

 

 

看过了常用格式化符的定义,我们来看几个示例

select to_char(a),
       to_char(a,'99.90'),
       to_char(a,'90.90'),
       to_char(a,'FM90.99'),
       rtrim(to_char(a,'FM90.99'),to_char(0,'.'))
from(
       select 50 a from dual
       union all select 50.57 from dual
       union all select 5.57 from dual
       union all select 0.35 from dual
       union all select 0.4 from dual
)

从上图我们可以看出TO_CAHR格式化数字的时候有个坑,如果小数点前面只有0,格式化之后0会丢失。

怎么解决呢,只需要在小数点前面用0这个占位符就可以了。

例如:格式化一个百分比,小数点后面保留2位,没有补0

to_char(a,'FM990.00')

因为百分数的整数部分最多3位,所以要有三个占位符,防止小数点前面的0丢失,所以小数点前面写0,因为小数点后面没有数字需要补0,所以不能填99,只能填00。

 

  • 11
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值