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

80酷酷网    80kuku.com

  存储过程|金额|中文|转换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 

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: