欢迎光临
我们一直在努力

金额阿拉伯数字转换为中文的存储过程(转)

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

create procedure atoc
@changemoney money
as
set nocount on
declare @string1 char(20)
declare @string2 char(30)
declare @string4 varchar(100)
declare @string3 varchar(100) –从原a值中取出的值
declare @i int –循环变量
declare @j int –a的值乘以100的字符串长度
declare @ch1 varchar(100) –数字的汉语读法
declare @ch2 varchar(100) –数字位的汉字读法
declare @zero int –用来计算连续有几个零
declare @returnvalue varchar(100)

select @returnvalue =
select @string1 = 零壹贰叁肆伍陆柒捌玖
select @string2 = 万仟佰拾亿仟佰拾万仟佰拾元角分

select @string4 = cast(@changemoney*100 as int)

select @j=len(cast((@changemoney*100) as int))

select @string2=right(@string2,@j)

select @i = 1

while @i<= @j begin

select @string3 = substring(@string4,@i,1)

if @string3<>0 begin

select @ch1 = substring(@string1, cast(@string3 as int) + 1, 1)
select @ch2 = substring(@string2, @i, 1)
select @zero = 0 –表示本位不为零
end
else begin
if (@zero = 0) or (@i = @j – 9) or (@i = @j – 5) or (@i = @j – 1)
select @ch1 = 零
else
select @ch1 =

select @zero = @zero + 1 –表示本位为0

–如果转换的数值需要扩大,那么需改动以下表达式 i 的值。
select ch2 =

if @i = @j – 10 begin
select @ch2 = 亿
select @zero = 0
end

if @i = @j – 6 begin
select @ch2 = 万
select @zero = 0
end

if @i = @j – 2 begin
select @ch2 = 元
select @zero = 0
end

if @i = @j
select @ch2 = 整

end

select @returnvalue = @returnvalue + @ch1 + @ch2

select @i = @i+1
end

–最后将多余的零去掉
if charindex(仟仟,@returnvalue) <> 0
select @returnvalue = replace(@returnvalue, 仟仟, 仟)

if charindex(佰佰,@returnvalue) <> 0
select @returnvalue = replace(@returnvalue, 佰佰, 佰)

if charindex(零元,@returnvalue) <> 0
select @returnvalue = replace(@returnvalue, 零元, 元)

if charindex(零万,@returnvalue) <> 0
select @returnvalue = replace(@returnvalue, 零万, 万)

if charindex(零亿,@returnvalue) <> 0
select @returnvalue = replace(@returnvalue, 零亿, 亿)

if charindex(零整,@returnvalue) <> 0
select @returnvalue = replace(@returnvalue, 零整, 整)

if charindex(零佰,@returnvalue) <> 0
select @returnvalue = replace(@returnvalue, 零佰, 零)

if charindex(零仟,@returnvalue) <> 0
select @returnvalue = replace(@returnvalue, 零仟, 零)

if charindex(元元,@returnvalue) <> 0
select @returnvalue = replace(@returnvalue, 元元, 元)

select @returnvalue
go

发布于:2002-3-20 

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

相关推荐

  • 暂无文章