针对数字的常用格式化符
参数 | 示例 | 说明 |
---|---|---|
9 | 999 | 存在数字显示数字,不存在显示空格 |
0 | 000 | 存在数字显示数字,不存在显示0 |
. | 99.99 | 指定位置返回小数点 |
, | 999,999,999 | 指定位置返回逗号 |
FM | FM999,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。