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
