MSSql 自定义函数实现小写金额转换成大写(最高13位不包括小数点后两位)
来源:互联网 发布:什么软件可以录音 编辑:程序博客网 时间:2024/06/05 15:01
今天做项目的时候,需要生成WORD文档,然后要求把小写金额全部转换为大写,于是乎分享代码
---功能:小写金额转换成大写(最高13位不包括小数点后两位)---参数:n_LowerMoney 小写金额---v_TransType 种类 -- 1: directly translate, 0: read it in words ---输出:大写金额if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[LowerToUpper]') and xtype in (N'FN', N'IF', N'TF'))drop function [dbo].[LowerToUpper]GOCREATE FUNCTION dbo.LowerToUpper(@n_LowerMoney numeric(15,2),@v_TransType int) RETURNS VARCHAR(200) AS BEGIN Declare @v_LowerStr VARCHAR(200) -- 小写金额 Declare @v_UpperPart VARCHAR(200) Declare @v_UpperStr VARCHAR(200) -- 大写金额Declare @i_I intset @v_LowerStr = LTRIM(RTRIM(ROUND(@n_LowerMoney,2))) --四舍五入为指定的精度并删除数据左右空格set @i_I = 1set @v_UpperStr = ''while ( @i_I <= len(@v_LowerStr))beginselect @v_UpperPart = case substring(@v_LowerStr,len(@v_LowerStr) - @i_I + 1,1)WHEN '.' THEN '元'WHEN '0' THEN '零'WHEN '1' THEN '壹'WHEN '2' THEN '贰'WHEN '3' THEN '叁'WHEN '4' THEN '肆'WHEN '5' THEN '伍'WHEN '6' THEN '陆'WHEN '7' THEN '柒'WHEN '8' THEN '捌'WHEN '9' THEN '玖'END+ case @i_IWHEN 1 THEN '分'WHEN 2 THEN '角'WHEN 3 THEN ''WHEN 4 THEN ''WHEN 5 THEN '拾'WHEN 6 THEN '佰'WHEN 7 THEN '仟'WHEN 8 THEN '万'WHEN 9 THEN '拾'WHEN 10 THEN '佰'WHEN 11 THEN '仟'WHEN 12 THEN '亿'WHEN 13 THEN '拾'WHEN 14 THEN '佰'WHEN 15 THEN '仟'WHEN 16 THEN '万'ELSE ''ENDset @v_UpperStr = @v_UpperPart + @v_UpperStrset @i_I = @i_I + 1endif ( 0 = @v_TransType)beginset @v_UpperStr = REPLACE(@v_UpperStr,'零拾','零') set @v_UpperStr = REPLACE(@v_UpperStr,'零佰','零') set @v_UpperStr = REPLACE(@v_UpperStr,'零仟','零') set @v_UpperStr = REPLACE(@v_UpperStr,'零零零','零')set @v_UpperStr = REPLACE(@v_UpperStr,'零零','零')set @v_UpperStr = REPLACE(@v_UpperStr,'零角零分','整')set @v_UpperStr = REPLACE(@v_UpperStr,'零分','整')set @v_UpperStr = REPLACE(@v_UpperStr,'零角','零')set @v_UpperStr = REPLACE(@v_UpperStr,'零亿零万零元','亿元')set @v_UpperStr = REPLACE(@v_UpperStr,'亿零万零元','亿元')set @v_UpperStr = REPLACE(@v_UpperStr,'零亿零万','亿')set @v_UpperStr = REPLACE(@v_UpperStr,'零万零元','万元')set @v_UpperStr = REPLACE(@v_UpperStr,'万零元','万元')set @v_UpperStr = REPLACE(@v_UpperStr,'零亿','亿')set @v_UpperStr = REPLACE(@v_UpperStr,'零万','万')set @v_UpperStr = REPLACE(@v_UpperStr,'零元','元')set @v_UpperStr = REPLACE(@v_UpperStr,'零零','零')end-- 对壹元以下的金额的处理 if ( '元' = substring(@v_UpperStr,1,1))beginset @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))endif ( '零' = substring(@v_UpperStr,1,1))beginset @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))endif ( '角' = substring(@v_UpperStr,1,1))beginset @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))endif ( '分' = substring(@v_UpperStr,1,1))beginset @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))endif ('整' = substring(@v_UpperStr,1,1))beginset @v_UpperStr = '零元整'endreturn @v_UpperStrENDGO
0 0
- MSSql 自定义函数实现小写金额转换成大写(最高13位不包括小数点后两位)
- [MSSQL]小写金额转换成大写(sql server)
- 小写金额转换成大写金额的函数
- 小写金额转换成大写金额(JAVA实现)
- java实现小写金额转换大写金额
- 大写金额转换成小写
- 小写金额转换成大写
- 小写金额转换成大写
- 小写金额转换成大写
- 小写金额转换成大写
- 小写金额转换成大写
- ASP小写金额转换成大写金额
- 小写金额转换成大写金额
- 小写金额转换成中文大写金额
- 小写金额转换成大写金额
- 小写金额转换成中文大写金额
- jscript实现的客户端小写金额转换成人民币大写金额(最大千万元位)
- jscript实现的客户端小写金额转换成人民币大写金额(最大千万元位)
- 页面乱码问题
- java中的File.separator
- C++builder中的队列TQueue
- android hardwareAccelerated硬件加速
- 第9周项目3分数类的运算符重载(续)
- MSSql 自定义函数实现小写金额转换成大写(最高13位不包括小数点后两位)
- JavaScript权威指南笔记8_脚本化HTTP
- CocoaPods 0.35.0版本, 出现循环依赖的解决办法
- 图灵机器人学习
- Developer Assistant for Visual Studio:不容错过的代码搜索利器
- Mysql(6) 初级使用二 两张表之间的查询与更新
- 【开源访谈】阿里巴巴高级专家沈询谈阿里开源之路
- SortedMap 接口的作用
- c++内存泄露机制