OracleSQL金额小写转大写函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了OracleSQL金额小写转大写函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3951字,纯文字阅读大概需要6分钟。
内容图文
原文链接: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;无>
内容总结
以上是互联网集市为您收集整理的OracleSQL金额小写转大写函数全部内容,希望文章能够帮你解决OracleSQL金额小写转大写函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。