PLSQL格式编号,用于显示小数限制

时间:2016-12-27 17:54:53

标签: sql oracle

我有一个问题,我很确定不是唯一的

我有一个数据库列,其值如下所示

Col
.42
1.2
5
2.222212

现在我将此列附加到前端应用程序并需要格式化它。但我也不应该丢失任何小数值。

所以我想要发送到前端应用程序就像

0.42
1.2
5.0
2.222212

基本上,我不想放弃任何小数位。但是不应该添加超过1的尾随零。类似地,应该在以“。”开头的十进制值之前附加0。 (例如:.42)但不应超过1个前导0。

现在就打破我的头脑。任何帮助都会非常感激。

谢谢

1 个答案:

答案 0 :(得分:2)

也许是这样的?键是0标记(如果那里没有数字,放在0中)和FM(除了显示为必需的 - 即单位数,小数点和十分位数,使输出尽可能窄) )。

这假定输入为NUMBER数据类型,所需输出为字符串(VARCHAR2)。如果输入也是字符串,请将它们包装在to_number()

with
     test_data ( col ) as (
       select .42      from dual union all
       select 1.2      from dual union all
       select 5        from dual union all
       select 2.222212 from dual
     )
-- end of test data; the SQL query is the one line below
select col, to_char(col, 'FM99999990.0999999999') as str from test_data;

     COL  STR
--------  --------
    0.42  0.42
     1.2  1.2
       5  5.0
2.222212  2.222212