当前位置: 代码迷 >> SQL >> SQL Server 存储过程-阿拉伯数字转换成汉语言大写金额<转>
  详细解决方案

SQL Server 存储过程-阿拉伯数字转换成汉语言大写金额<转>

热度:7   发布时间:2016-05-05 14:43:13.0
SQL Server 存储过程-阿拉伯数字转换成中文大写金额<转>
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   intset   nocount   onselect   @v_LowerStr   =   LTRIM(RTRIM(STR(@n_LowerMoney,20,2)))   --四舍五入为指定的精度并删除数据左右空格select   @i_I   =   1select   @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   ' '                ENDselect   @v_UpperStr   =   @v_UpperPart   +   @v_UpperStrselect   @i_I   =   @i_I   +   1end--------print     '//v_UpperStr   = [email protected]_UpperStr   + '// 'if   (   @v_TransType=0   )beginselect   @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))endif   (substring(@v_UpperStr,1,1)=   '零 ')begin          select   @v_UpperStr   =   substring(@v_UpperStr,2,(len(@v_UpperStr)   -   1))endif   (substring(@v_UpperStr,1,1)= '角 ')begin          select   @v_UpperStr   =   substring(@v_UpperStr,2,(len(@v_UpperStr)   -   1))endif   (   substring(@v_UpperStr,1,1)= '分 ')begin          select   @v_UpperStr   =   substring(@v_UpperStr,2,(len(@v_UpperStr)   -   1))endif   (substring(@v_UpperStr,1,1)= '整 ')begin          select   @v_UpperStr   =   '零元整 'endselect   @[email protected]_UpperStrGO


调用过程:

declare   @ret   varchar(200)exec   L2U   567983.897,1,@ret   outputselect   @ret 
  相关解决方案