ORACLE将数字转换为字符串

前端之家收集整理的这篇文章主要介绍了ORACLE将数字转换为字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
转换数字需要一些帮助:
select to_char(a,'99D99'),to_char(a,'90D99')
from
(
select 50 a from dual
union
select 50.57 from dual
union
select 5.57 from dual
union
select 0.35 from dual
union
select 0.4 from dual

将导致:

1,35    0,35
2,40    0,40
3     5,57    5,57
4    50,00   50,00
5    50,57   50,57

但是如何使我的输出像:

> 0,35
> 0,4
> 5,57
> 50
> 50,57

我在逗号之前需要0,但之后不需要.

使用 FM format model modifier关闭,因为你不会得到小数分隔符后面的尾随零;但你仍然会得到分隔符,例如50 ..你可以使用rtrim摆脱它:
select to_char(a,'99D90'),'90D90'),'FM90D99'),rtrim(to_char(a,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,'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

猜你在找的Oracle相关文章