加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

银行金额小写转大写function ORACLE

发布时间:2021-01-13 08:50:02 所属栏目:MySql教程 来源:网络整理
导读:以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 create or replaceFunction Money2Chinese(moneyValues In Number) Return Varchar2 Is --moneyValue := Round(to_number(moneyValue))*100 Str1 NCHAR(10) := '零壹

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

create or replace
Function Money2Chinese(moneyValues In Number) Return Varchar2 Is
    --moneyValue := Round(to_number(moneyValue))*100
    Str1   NCHAR(10) := '零壹贰叁肆伍陆柒捌玖';
    Str2   NCHAR(15) := '萬仟佰拾亿仟佰拾萬仟佰拾元角分';
    Str3   Number(10);
    moneyValue Varchar2(100) := trim(to_char(moneyValues)*100);  --保留小数并去掉小数点后的值
    chineseValue Varchar2(600);
    lens    Number   := trim(length(moneyValue));
    nZero  Number   := 0;
    cha1   NCHAR(10);
    cha2   NCHAR(10);
Begin 
   --判断为空时
    If lens Is Null Then 
        Return Null;
    End If;
    --判断位数超长时  超过15位不进行处理    
    If lens >15 Then
        Return '超出银行支票取值范围';
    End If;
    If moneyValue = 0 Then
        Return '零元整';
    End If;
    --以上条件测试之后可以运行
    
    
    --下面条件选项待测
    Str2 := substr(Str2,(length(Str2)-lens)+1,lens);
    For i In 1..lens Loop
    Str3 := substr(trim(moneyValue),i,1);
    --循环遍历数值
      If i <> lens-2 and i <> lens-6 and i <> lens-10 and i <>lens-14  --不是万亿,亿,万,元位等关键位
        Then
          IF  Str3=0 Then
            cha1 := '';
            cha2 := '';
            nZero := nZero +1;
          --第一个判断
          else
          IF  Str3 <> 0 and nZero <> 0 Then
              cha1 := '零'||substr(Str1,Str3+1,1);
              cha2 := substr(Str2,1 );
              nZero := 0;
              --第二个判断
           Else
              cha1 := substr(Str1,(Str3+1),1);
          end if;
         End If;
          --是万亿,亿,万,元位等关键位
        Else
          IF Str3 <> 0 and nZero <> 0 Then
              cha1 := '零'||substr(Str1,1);
              nZero := 0 ;
              Else
                If Str3 <> 0 and nZero = 0  Then
                  cha1 := substr(Str1,1);
                  cha2 := substr(Str2,1);
                  nZero := 0 ;
                Else
                      If Str3 = 0 and nZero >= 3 Then
                        cha1 := '';
                        cha2 := '';
                        nZero := nZero + 1;
                        Else
                          cha1 := '';
                          cha2 := substr(Str2,1);
                          nZero := nZero + 1;
                      End If;
                End If;
                If i=(lens-10) or i = (lens - 2) Then
                  cha2  := substr(Str2,1);
                End If;
          End If;     
      End IF;
        chineseValue := chineseValue||trim(cha1)||trim(cha2);
    End Loop;
    --结束循环
    If  Str3 = 0 Then 
      chineseValue := chineseValue||'整';
    End If;
    Return chineseValue;
End Money2Chinese;

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读