oracle to_char函数将number转成string

很多数据转换处理操作时,会遇到将0.007007040000转换成0.70%的需求,我们使用oracle 的sql 函数 to_char可以实现这种转换。

这个函数用来将date或number数据类型转换成可显示的字符串,格式是to_char(number_type, format_mask)。

格式’999.99’,9表示对应的某一个指定位数的值,如果是值是0则忽略不显示,如果指定位数没有值,则以空格表示。

格式’0990.990’,0表示对应的某一个指定位数的值,如果是值是0则显示为0,如果是没有值也显示为0。

格式’fm990.90′,fm表示将显示出来的字符串定位数没有值而显示的空格清理掉,作用和ltrim类似。


复制代码 代码如下:

sql> select to_char(12304.560,’999.99′) from dual;

to_char(12304.560,’999.99′)

—————————

#######

sql> select to_char(104.560,’999.99′) from dual;

to_char(104.560,’999.99′)

————————-

104.56

sql> select to_char(104.560,’99999.99′) from dual;

to_char(104.560,’99999.99′)

—————————

104.56

sql> select to_char(104.560,’99999.990′) from dual;

to_char(104.560,’99999.990′)

—————————-

104.560

sql> select to_char(104.560,’0099.990′) from dual;

to_char(104.560,’0099.990′)

—————————

0104.560

复制代码 代码如下:

sql>

sql> select to_char(round(0.007007040000, 4) * 100, ‘fm99999999990.90’) || ‘%’ as aa,

2 length(to_char(round(0.007007040000, 4) * 100, ‘fm99999999990.90’) || ‘%’) as bb

3 from dual;

aa bb

—————- ———-

0.70% 5

sql>

sql> select to_char(round(0.007007040000, 4) * 100, ‘99999999990.90’) || ‘%’ as aa,

2 length(to_char(round(0.007007040000, 4) * 100, ‘99999999990.90’) || ‘%’) as bb

3 from dual;

aa bb

—————- ———-

0.70% 16

这是to_char将数字转换成字符串的常见操作功能,还有其他一些格式,见to_char(numeric)的格式模板。


复制代码 代码如下:

模板 描述

9 带有指定位数的值

0 前导零的值

. (句点) 小数点

, (逗号) 分组(千)分隔符

pr 尖括号内负值

s 带负号的负值(使用本地化)

l 货币符号(使用本地化)

d 小数点(使用本地化)

g 分组分隔符(使用本地化)

mi 在指明的位置的负号(如果数字 < 0)

pl 在指明的位置的正号(如果数字 > 0)

sg 在指明的位置的正/负号

rn 罗马数字(输入在 1 和 3999 之间)

th or th 转换成序数

v 移动 n 位(小数)(参阅注解)

eeee 科学记数。现在不支持。

它还能将时间格式的数据转换成字符串,只是格式更加复杂。

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐