Create function ReplaceStr(@str varchar(200),@nIndex int,@nstr varchar(10))
returns varchar(200) as
begin
declare @Result varchar(200)
declare @nLen int
set @nLen = datalength(@str)
if @nIndex<=@nLen and @nIndex>0 begin
set @Result = substring(@str,1,@nIndex-1)+@nstr+substring(@str,@nIndex+1,100)
end else
set @Result = @str
return @Result
end
Create function JeToDx(@eNum money)
returns varchar(200) as
begin
declare @sCap varchar(50),@dDigi varchar(50)
select @sCap = '零壹贰叁肆伍陆柒捌玖',
@dDigi = '仟佰拾亿仟佰拾万仟佰拾元 角分'
declare @k int,@i int,@j int,@n int
declare @nStr varchar(10),@oStr varchar(10),@Yuan varchar(100),@pStr varchar(10)
declare @bMark smallint;
declare @bStr varchar(100),@afxStr varchar(10),@Result varchar(100),@c varchar(10)
select @Result = '',@afxStr='',@Yuan='',@j = 0
if not(@eNum<0.01 and @eNum>-0.01)begin
if @eNum<0 begin
set @eNum = -@eNum
set @afxStr = '负'
end else
set @afxStr = ''
set @bStr = ' '
set @Result = convert(varchar,Round(@eNum,2)) --转成字符串
set @k = datalength(@Result) --求长度
set @i = 16 - @k --开始索引
set @pStr = '零'
set @n = 1
while @i<16 begin
set @c = substring(@Result,@n,1)
if @c<>'.' begin
set @k = ascii(@c) - 47
set @bStr = dbo.ReplaceStr(@bStr,@i,substring(@sCap,@k,1))
end
set @i = @i+1
set @n = @n+1
end
select @Yuan = '',@nStr = '',@oStr = ''
set @i=1
while @i<14 begin
if substring(@bStr,@i,1)<>' ' begin
set @nStr = substring(@bStr,@i,1)
if @nStr=@pStr begin
if @i=4 or @i=8 or @i=12 begin
if @Yuan<>'' begin
if @oStr=@pStr begin
set @n = datalength(@Yuan) / 2
set @Yuan = substring(@Yuan,1,@n-1)
end
if right(@Yuan,1)<>'亿'
set @Yuan = @Yuan + substring(@dDigi,@i,1)
set @bMark = 1
end else
set @bMark = 0
end else begin
if @bMark=1 or @oStr<>@pStr
set @Yuan = @Yuan+@pStr
set @bMark = 0
end
end else begin
if right(@Yuan,1)='亿' and @i>8
set @Yuan = @Yuan+@pStr
set @Yuan = @Yuan+@nStr+substring(@dDigi,@i,1)
set @bMark = 1
end
set @oStr = @nStr
end
set @i = @i+1
end
set @oStr = substring(@bStr,14,1)
if @oStr=@pStr begin
if substring(@bStr,15,1)<>@pStr begin
if @Yuan<>''
set @Yuan = @Yuan+@pStr+substring(@bStr,15,1)+substring(@dDigi,15,1)
else
set @Yuan = substring(@bStr,15,1)+substring(@dDigi,15,1)
end else
set @Yuan = @Yuan
end else begin
set @Yuan = @Yuan+substring(@bStr,14,1)+substring(@dDigi,14,1)
if substring(@bStr,15,1)<>@pStr
set @Yuan = @Yuan+substring(@bStr,15,1)+substring(@dDigi,15,1)
end
end
return @afxStr+@Yuan
end
发表于 @ 2009年06月05日 00:54:00 | 评论( loading... ) | 举报| 收藏