zoukankan      html  css  js  c++  java
  • ORACLE金额转换成英文大写的函数

    用法如下:get_capital_money(Currency, Money)
    Currency: 货币或货币描述,将放在英文大写的前面;
    Money:金额。支持两位小数点。如果需要更多的小数点,请自行修改。

    create or  replace function GET_CAPITAL_MONEY (
               P_currency varchar2,
               P_money number) 
               return varchar2 IS
          type DIME is table of varchar2(20) index by binary_integer;
          numberstr DIME;
          degratstr DIME;
          convertm DIME;
          tmpstr      varchar2(200);
          T_money_int   varchar2(10);
          i             int;
          Len_T_money_int int;
          T_money_dec   varchar2(2);
          R_value   varchar2(1000) := '';
          NUM       number;       
          
    begin
        numberstr(1) :='zero';
        numberstr(2) :='one';
        numberstr(3) :='two';
        numberstr(4) :='three';
        numberstr(5) :='four';
        numberstr(6) :='five';
        numberstr(7) :='six';
        numberstr(8) :='seven';
        numberstr(9) :='eight';
        numberstr(10) :='nine';
    
        numberstr(11) :='ten';
        numberstr(12) :='eleven';
        numberstr(13) :='twelve';
        numberstr(14) :='thirteen';
        numberstr(15) :='fourteen';
        numberstr(16) :='fifteen';
        numberstr(17) :='sixteen';
        numberstr(18) :='seventeen';
        numberstr(19) :='eighteen';
        numberstr(20) :='nineteen';
    
        numberstr(21) :='';
        numberstr(22) :='';
        numberstr(23) :='twenty';
        numberstr(24) :='thirty';
        numberstr(25) :='forty';
        numberstr(26) :='fifty';
        numberstr(27) :='sixty';
        numberstr(28) :='seventy';
        numberstr(29) :='eighty';
        numberstr(30) :='ninety';
        degratstr(1) :='thousand';
        degratstr(2) :='million';
        degratstr(3) :='billion';
        degratstr(4) :='trillion';
        num := P_money;
        if num = 0 then
           R_value := 'ZERO';
        end if;
        T_money_int := trim(to_char(num,'9999999999'));
        T_money_dec := substr(TRIM(to_char(num,'9999999999.99')),length(T_money_int)+2,2);
        select decode(mod(length(T_money_int),3),1,'00'||T_money_int,2,'0'||T_money_int,T_money_int) into T_money_int from dual;
        Len_T_money_int := length(T_money_int);
        i := 0;
        while i < Len_T_money_int loop
              i := i+3; 
              convertm(1) := SUBSTR(T_money_int,Len_T_money_int-i+1,1);
              convertm(2) := SUBSTR(T_money_int,Len_T_money_int-i+2,1);
              convertm(3) := SUBSTR(T_money_int,Len_T_money_int-i+3,1);
              tmpstr := '';
              if convertm(1) <> '0' then
                 tmpstr := trim(tmpstr||' '||numberstr(to_number(convertm(1))+1)||' hundred');
              end if;
              if convertm(2) = '1' then
                 tmpstr := trim(tmpstr||' '||numberstr(to_number(convertm(3))+11));
              else
                  if convertm(2) <> '0' then
                     if convertm(3) = '0' then
                        tmpstr := trim(tmpstr||' '||numberstr(to_number(convertm(2))+21));
                     else
                        tmpstr := trim(tmpstr||' '||numberstr(to_number(convertm(2))+21)||'-'||numberstr(to_number(convertm(3))+1));
                     end if;
                  else
                     if convertm(3) <> '0' then
                        tmpstr := trim(tmpstr||' '||numberstr(to_number(convertm(3))+1));
                     end if;
                  end if;
              end if;
              if i = 3 then
                  R_value := trim(tmpstr||' '||R_value);
              else
                  R_value := trim(tmpstr||' '||degratstr(i/3-1)||' '||R_value);
              end if;
        end loop;
        tmpstr := '';
        if to_number(T_money_dec)>0 then
           if substr(T_money_dec,1,1) = '0' then
              tmpstr := 'and '||substr(T_money_dec,2,1)||'/100';
           else
              tmpstr := 'and '||t_money_dec||'/100';
           end if;
        end if;
        if length(tmpstr)<1 then
           R_value := upper(R_value||' only.');
        else
           R_value := upper(R_value||' '||tmpstr||' only.');
        end if;
        return P_currency||' '||R_value;
    end;
    


  • 相关阅读:
    55. Jump Game
    367. Valid Perfect Square
    22. Generate Parentheses
    254. Factor Combinations
    77. Combinations
    17. Letter Combinations of a Phone Number
    javascript获取随机数的几种方式
    javascript获取随机rgb颜色和十六进制颜色的方法
    javascript遍历数组最优写法
    javascript中字符串的常用方法
  • 原文地址:https://www.cnblogs.com/fyq891014/p/4188761.html
Copyright © 2011-2022 走看看