日期:2014-05-17  浏览次数:20850 次

请教关于金额格式化的问题
请问 如何将一个金额,格式化为 "±999999999999999.999“ 这种格式
比如: 12345.5
格式化为+00000000012345.500

位数不够前面补0, 另外正数前面有+ 号 负数前面 - 号

------解决方案--------------------
create or replace function f1(p1 varchar2) return varchar2 is
a char(1);
b varchar2(20);
c varchar2(20);
d varchar2(20);
begin
a :=substr(p1,0,1);
if (a = '-' or a = '+' ) then
b :=substr(p1,2,instr(p1,'.',2,1)-2);
c := lpad(b,15,'0');
d := rpad(substr(p1,instr(p1,'.',1,1)+1),3,'0');
else
a := '+';
b :=substr(p1,0,instr(p1,'.',1,1)-1);
c := lpad(b,15,'0');
d := rpad(substr(p1,instr(p1,'.',1,1)+1),3,'0');
end if;
return a || c || '.' || d;
end;
/
------解决方案--------------------
SQL code
--直接to_char是可以的
select to_char(12345.5,'S000000000000000.000') from dual;

------解决方案--------------------
探讨
SQL code
--直接to_char是可以的
select to_char(12345.5,'S000000000000000.000') from dual;