原创  SQL SERVER 金额转换为大写函数 收藏

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... ) | 编辑| 举报| 收藏

旧一篇:javascript金额转换为大写函数

  • 发表评论
  • 评论内容:
  •  
Copyright © operfume
Powered by CSDN Blog