1

我有这些价值观

ROWA
-------
0.23
0.2350
0.1000
1.250
1200
1.300

我想转换为只删除十进制尾随零的格式我尝试使用这个

select cast(RowA as decimal(18,3)) from dual.

但结果删除了小数的前导零。

ROWA
-------
.23
.235
.1
1.25
1200
1.3

我如何转换为

ROWA
-------
0.23
0.235
0.1
1.25
1200
1.3
4

3 回答 3

5

您的示例显示了两种不同的格式 - 一种用于十进制数,另一种用于整数。

with sampledata as
  (select 0.23 as rowa from dual
union all select 0.2350 from dual
union all select 0.1000 from dual
union all select 1.250 from dual
union all select 1200 from dual
union all select 1.300 from dual
 )
select TO_CHAR(rowa
              ,CASE WHEN rowa = TRUNC(rowa)
               then 'fm999999999999999990'
               else 'fm999999999999999990D999'
               end) as rowa
from sampledata;

ROWA
=====
0.23
0.235
0.1
1.25
1200
1.3
于 2013-09-17T02:07:04.897 回答
1

这是我目前知道的最简洁的解决方案:

rtrim(to_char(rowa, 'FM999999999999999990.999'), '.')

取自我的另一个详细回答

于 2015-01-14T15:44:05.213 回答
0

或者怎么样

rtrim ( rtrim ( to_char ( rowa ), 0 ), '.' )

于 2017-03-27T09:59:53.597 回答