欢迎光临
我们一直在努力

小写转大写金额_数据库技巧

建站超值云服务器,限时71元/月

原作在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

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 小写转大写金额_数据库技巧
分享到: 更多 (0)

相关推荐

  • 暂无文章