创建转换为大写金额的存储过程

来源:互联网 发布:淘宝店铺标题优化 编辑:程序博客网 时间:2024/05/17 01:03

/********************************************************
创建时间:20110112
修改时间:
功能:小写金额转换成大写
参数:n_LowerMoney   小写金额
                    v_TransType   种类   --   1:   directly   translate,   0:   read   it   in   words  
输出:大写金额
********************************************************/
ALTER   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