删除尾随小数零

use*_*160 1 oracle

我有这些价值观

ROWA
-------
0.23
0.2350
0.1000
1.250
1200
1.300
Run Code Online (Sandbox Code Playgroud)

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

select cast(RowA as decimal(18,3)) from dual.
Run Code Online (Sandbox Code Playgroud)

但结果会删除小数的前导零.

ROWA
-------
.23
.235
.1
1.25
1200
1.3
Run Code Online (Sandbox Code Playgroud)

我如何转换为

ROWA
-------
0.23
0.235
0.1
1.25
1200
1.3
Run Code Online (Sandbox Code Playgroud)

Jef*_*emp 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
Run Code Online (Sandbox Code Playgroud)