`
caleb_520
  • 浏览: 252631 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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   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 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics