我有一个问题,我很确定不是唯一的
我有一个数据库列,其值如下所示
Col
.42
1.2
5
2.222212
现在我将此列附加到前端应用程序并需要格式化它。但我也不应该丢失任何小数值。
所以我想要发送到前端应用程序就像
0.42
1.2
5.0
2.222212
基本上,我不想放弃任何小数位。但是不应该添加超过1的尾随零。类似地,应该在以“。”开头的十进制值之前附加0。 (例如:.42)但不应超过1个前导0。
现在就打破我的头脑。任何帮助都会非常感激。
谢谢
答案 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