oracle sql 转小写转大写,OracleSQL金额小写转大写函数

原文链接:http://www.cnblogs.com/Ira_Young/archive/2009/11/11/1601168.html 无 Create Or Replace Function Money2Chinese(Money In Number) Return Varchar2 Is strYuan Varchar2(150); strYuanFen Varchar2(152); numLenYuan Number; numLenYuanFen Num

原文链接:http://www.cnblogs.com/Ira_Young/archive/2009/11/11/1601168.html

Create Or Replace Function Money2Chinese(Money In Number) Return Varchar2 Is

strYuan Varchar2(150);

strYuanFen Varchar2(152);

numLenYuan Number;

numLenYuanFen Number;

strRstYuan Varchar2(600);

strRstFen Varchar2(200);

strRst Varchar2(800);

Type typeTabMapping Is Table Of Varchar2(2) Index By Binary_Integer;

tabNumMapping typeTabMapping;

tabUnitMapping typeTabMapping;

numUnitIndex Number;

i Number;

j Number;

charCurrentNum Char(1);

Begin

If Money Is Null Then

Return Null;

End If;

strYuan := TO_CHAR(FLOOR(Money));

If strYuan = '0' Then

numLenYuan := 0;

strYuanFen := lpad(TO_CHAR(FLOOR(Money * 100)), 2, '0');

Else

numLenYuan := length(strYuan);

strYuanFen := TO_CHAR(FLOOR(Money * 100));

End If;

If strYuanFen = '0' Then

numLenYuanFen := 0;

Else

numLenYuanFen := length(strYuanFen);

End If;

If numLenYuan = 0 Or numLenYuanFen = 0 Then

strRst := '零圆整';

Return strRst;

End If;

tabNumMapping(0) := '零';

tabNumMapping(1) := '壹';

tabNumMapping(2) := '贰';

tabNumMapping(3) := '叁';

tabNumMapping(4) := '肆';

tabNumMapping(5) := '伍';

tabNumMapping(6) := '陆';

tabNumMapping(7) := '柒';

tabNumMapping(8) := '捌';

tabNumMapping(9) := '玖';

tabUnitMapping(-2) := '分';

tabUnitMapping(-1) := '角';

tabUnitMapping(1) := '';

tabUnitMapping(2) := '拾';

tabUnitMapping(3) := '佰';

tabUnitMapping(4) := '仟';

tabUnitMapping(5) := '万';

tabUnitMapping(6) := '拾';

tabUnitMapping(7) := '佰';

tabUnitMapping(8) := '仟';

tabUnitMapping(9) := '亿';

For i In 1 .. numLenYuan Loop

j := numLenYuan - i + 1;

numUnitIndex := Mod(i, 8);

If numUnitIndex = 0 Then

numUnitIndex := 8;

End If;

If numUnitIndex = 1 And i > 1 Then

strRstYuan := tabUnitMapping(9) || strRstYuan;

End If;

charCurrentNum := substr(strYuan, j, 1);

If charCurrentNum <> 0 Then

strRstYuan := tabNumMapping(charCurrentNum) ||

tabUnitMapping(numUnitIndex) || strRstYuan;

Else

If (i = 1 Or i = 5) Then

If substr(strYuan, j - 3, 4) <> '0000' Then

strRstYuan := tabUnitMapping(numUnitIndex) || strRstYuan;

End If;

Else

If substr(strYuan, j + 1, 1) <> '0' Then

strRstYuan := tabNumMapping(charCurrentNum) || strRstYuan;

End If;

End If;

End If;

End Loop;

For i In -2 .. -1 Loop

j := numLenYuan - i;

charCurrentNum := substr(strYuanFen, j, 1);

If charCurrentNum <> '0' Then

strRstFen := tabNumMapping(charCurrentNum) || tabUnitMapping(i) ||

strRstFen;

End If;

End Loop;

If strRstYuan Is Not Null Then

strRstYuan := strRstYuan || '圆';

End If;

If strRstFen Is Null Then

strRstYuan := strRstYuan || '整';

Elsif length(strRstFen) = 2 And substr(strRstFen, 2) = '角' Then

strRstFen := strRstFen || '整';

End If;

strRst := strRstYuan || strRstFen;

--strRst := Replace(strRst, '亿零', '亿');

--strRst := Replace(strRst, '万零', '万');

Return strRst;

End Money2Chinese; 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值