您的位置:首页技术开发数据库技巧 → 小写转大写金额

小写转大写金额

时间:2004/12/2 0:59:00来源:本站整理作者:蓝点我要评论(0)

原作在SQL 2000中有一些问题。修正错误并在SQL 2000中运行通过。



/********************************************************

作者:(wleii165@yahoo.com)

版本:1.0

创建时间:20020227

修改时间:

功能:小写金额转换成大写

参数:n_LowerMoney 小写金额

          v_TransType 种类 -- 1: directly translate, 0: read it in words 

输出:大写金额

********************************************************/

CREATE PROCEDURE dbo.L2U 

(

@n_LowerMoney numeric(15,2),

@v_TransType int,

@RET VARCHAR(200) output

)

 AS 

  

Declare @v_LowerStr VARCHAR(200) -- 小写金额 

Declare @v_UpperPart VARCHAR(200) 

Declare @v_UpperStr VARCHAR(200) -- 大写金额

Declare @i_I int



set nocount on



select @v_LowerStr = LTRIM(RTRIM(STR(@n_LowerMoney,20,2))) --四舍五入为指定的精度并删除数据左右空格



select @i_I = 1

select @v_UpperStr = ''



while ( @i_I <= len(@v_LowerStr))

begin

      select @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_I

                            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  '拾'

                            WHEN  10  THEN  '佰'

                            WHEN  11  THEN  '仟'

                            WHEN  12  THEN  '亿'

                            WHEN  13  THEN  '拾'

                            WHEN  14  THEN  '佰'

                            WHEN  15  THEN  '仟'

                            WHEN  16  THEN  '万'

                            ELSE ''

                            END

select @v_UpperStr = @v_UpperPart + @v_UpperStr

select @i_I = @i_I + 1

end



--------print  '//v_UpperStr ='+@v_UpperStr +'//'



if ( @v_TransType=0 )

begin

select @v_UpperStr = REPLACE(@v_UpperStr,'零拾','零') 

select @v_UpperStr = REPLACE(@v_UpperStr,'零佰','零') 

select @v_UpperStr = REPLACE(@v_UpperStr,'零仟','零') 

select @v_UpperStr = REPLACE(@v_UpperStr,'零零零','零')

select @v_UpperStr = REPLACE(@v_UpperStr,'零零','零')

select @v_UpperStr = REPLACE(@v_UpperStr,'零角零分','整')

select @v_UpperStr = REPLACE(@v_UpperStr,'零分','整')

select @v_UpperStr = REPLACE(@v_UpperStr,'零角','零')

select @v_UpperStr = REPLACE(@v_UpperStr,'零亿零万零元','亿元')

select @v_UpperStr = REPLACE(@v_UpperStr,'亿零万零元','亿元')

select @v_UpperStr = REPLACE(@v_UpperStr,'零亿零万','亿')

select @v_UpperStr = REPLACE(@v_UpperStr,'零万零元','万元')

select @v_UpperStr = REPLACE(@v_UpperStr,'万零元','万元')

select @v_UpperStr = REPLACE(@v_UpperStr,'零亿','亿')

select @v_UpperStr = REPLACE(@v_UpperStr,'零万','万')

select @v_UpperStr = REPLACE(@v_UpperStr,'零元','元')

select @v_UpperStr = REPLACE(@v_UpperStr,'零零','零')

end



-- 对壹元以下的金额的处理 

if ( substring(@v_UpperStr,1,1)='元' )

begin

     select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))

end



if (substring(@v_UpperStr,1,1)= '零')

begin

     select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))

end



if (substring(@v_UpperStr,1,1)='角')

begin

     select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))

end



if ( substring(@v_UpperStr,1,1)='分')

begin

     select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))

end



if (substring(@v_UpperStr,1,1)='整')

begin

     select @v_UpperStr = '零元整'

end



select @ret=@v_UpperStr



GO



调用过程:



declare @ret varchar(200)



exec L2U 567983.897,1,@ret output



select @ret


相关阅读 Mac和Windows哪个好 windows和mac os对比介绍Win10预览版怎么升级 Win10预览版升级方法厂商不再预装Win7或8.1系统,驱动人生帮您快速升级Mac移动硬盘安装win8 Mac将win装在移动硬盘使用教程windows10xboxone串流简单教程Windows Hello怎么用 Windows Hello使用设置教程win10怎么关闭自动更新 win10如何关闭自动更新Mac系统如何远程桌面到Windows系统

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 mssql企业管理器不能打 Oracle PRKC-1002错误原因和解决方案SQL SERVER数据库日志清空图文教程win2003计算机改名后sql server 2005 本地复DB2错误信息码大全

人气排行 彻底解决mysql中文乱码的办法mysql数据库root密码忘记的修改方法SQL SERVER数据库日志清空图文教程.bak备份文件如何恢复Oracle PRKC-1002错误原因和解决方案Oracle错误代码大全如何将txt的文本数据导入SQL server 2005呢DB2错误信息码大全