在Oracle中,根据数据库中配置的保留小数位数,给数据保留对应的位数 「参数说明」 「实例展示」 「SQL结果」 从上图我们可以看出to_char格式化数字的时候有个坑,如果小数点前面只有0,格式化之后0会丢失。 怎么解决呢,只需要在小数点前面用0这个占位符就可以了。 例如:格式化一个百分比,小数点后面保留2位,没有补0 to_char(a,'FM990.00') 因为百分数的整数部分最多3位,所以要有三个占位符,防止小数点前面的0丢失,所以小数点前面写0,因为小数点后面没有数字需要补0,所以不能填99,只能填00。 lpad函数是Oracle数据库函数,lpad函数从左边对字符串使用指定的字符进行填充。从其字面意思也可以理解,l是left的简写,pad是填充的意思,所以lpad就是从左边填充的意思。 「语法格式如下:」 lpad( string, padded_length, [ pad_string ] ) string:准备被填充的字符串 padded_length:填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符 pad_string:填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,lpad函数将会在string的左边粘贴空格 「实例展示」1 问题背景
2 Oracle to_char函数格式化数字用法介绍
参数
说明
示例
9
存在数字显示数字,不存在显示空格
999
0
存在数字显示数字,不存在显示0
000
.
指定位置返回小数点
99.99
,
指定位置返回逗号
999,999,999
FM
如果是因为9带来的空格则删除
FM999,999,99.00
$
数字开头返回一个美元符号
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
)
3 oracle的lpad()函数
❝
❝
SQL> select lpad('abcde',10,'oq') from dual;
LPAD('ABCDE',10,'OQ')
---------------------
oqoqoabcde
SQL> select lpad('abcde',2) from dual;
LPAD('ABCDE',2)
---------------
ab