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

针对数字的常用格式化符

常用数字格式化符
参数 示例 说明
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
)

Oracle TO_CHAR函数格式化数字(以及小数点前0丢失问题)_第1张图片

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

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

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

to_char(a,'FM990.00')

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

 

你可能感兴趣的:(Sql)