oracle字符转换为数值,ORACLE将数字转换为字符串

这篇博客探讨了如何使用SQL的to_char函数结合FM和rtrim功能来格式化数字,确保没有尾随零,并展示了不同场景下的应用实例。通过示例代码,解释了如何处理各种数字格式,包括整数和小数,同时注意到这可能会导致对齐问题。文章还提出了使用lpad进行对齐的解决方案,但会使代码显得较为复杂。
摘要由CSDN通过智能技术生成

使用

FM format model modifier来关闭,因为你不会得到小数分隔符后面的尾随零;但你仍然会得到分隔符,例如50 ..你可以使用rtrim摆脱它:

select to_char(a, '99D90'),

to_char(a, '90D90'),

to_char(a, 'FM90D99'),

rtrim(to_char(a, 'FM90D99'), to_char(0, 'D'))

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

)

order by a;

TO_CHA TO_CHA TO_CHA RTRIM(

------ ------ ------ ------

.35 0.35 0.35 0.35

.40 0.40 0.4 0.4

5.57 5.57 5.57 5.57

50.00 50.00 50. 50

50.57 50.57 50.57 50.57

请注意,我使用to_char(0,’D’)来生成要修剪的字符,以匹配小数分隔符 – 因此它会查找与第一个to_char相加的相同字符,或.

轻微的缺点是你失去了对齐.如果在其他地方使用它可能无关紧要,但它确实可以将它包装在一个lpad中,这开始使它看起来有点复杂:

...

lpad(rtrim(to_char(a, 'FM90D99'), to_char(0, 'D')), 6)

...

TO_CHA TO_CHA TO_CHA RTRIM( LPAD(RTRIM(TO_CHAR(A,'FM

------ ------ ------ ------ ------------------------

.35 0.35 0.35 0.35 0.35

.40 0.40 0.4 0.4 0.4

5.57 5.57 5.57 5.57 5.57

50.00 50.00 50. 50 50

50.57 50.57 50.57 50.57 50.57

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值