把阿拉伯数字转换成汉字

set  ANSI_NULLS ON
set  QUOTED_IDENTIFIER ON
go


--   =============================================
--  Author:         <--->
--  Create date:  < 2008 - 3 - 4 >
--  Description:     < 将阿拉伯数字转换成汉字大写 >
--   =============================================
ALTER   function   [dbo].[ConvertNumberToChinese](@inputId   money)
  RETURNS   Nvarchar(
4000 )   AS       
  BEGIN     
  declare   @rV   Nvarchar(
4000 )   
    
  declare   @tmpstr   Nvarchar(
4000 ),@M   Nvarchar( 4000 ),@K   Nvarchar( 4000 ),@I   numeric( 38 , 2 ),   
  @J   
int ,@lastJ    int ,@LastV   Nvarchar( 10 ),@LastF   Nvarchar( 10 ),@LastE   Nvarchar( 10 ),@LastVE   Nvarchar( 10 )   
  
set    @I = @inputId   
   
set    @K = N ''    
    
  
if    @I < 0      
  begin   
  
set    @I = 0 - @I   
  
set    @K = N ' '    
  end   
  
if    @I = 0       return    N ' 零元整 '    
    
  select   @tmpstr
= N ' 零壹贰叁肆伍陆柒捌玖分角元拾佰仟万拾佰仟亿拾佰仟 ' ,@M = cast(cast(@I * 100     as    bigint)    as    varchar( 800 )),@J = len(@M),@LastVE = N ''    
  
while    @J >= 1    
  begin   
  
set    @LastF = substring(@tmpstr,   cast(substring(@m,len(@M) - @j + 1 , 1 )    as    bigint) + 1 , 1 )   
  
set    @LastE = substring(@tmpstr, 10 + @J, 1 )   
  
if    @LastF <> N ' '    
  begin   
  
if    @LastV = N ' '    
  
if    (@lastJ >= 7    and   @j < 7 )   or   (@lastJ >= 11    and   @j < 11    )   or   (@lastJ >= 3    and   @j <= 2 )   
  
if    @J <= 2    and   @lastJ <= 3    
  
set    @K = @K + @LastVE + @LastF + @LastE   
  
else    
  
set    @K = @K + @LastVE + @LastV + @LastF + @LastE   
  
else    
  
set    @K = @K + @LastV + @LastF + @LastE   
  
else    
  
set    @K = @K + @LastF + @LastE   
  select   @lastJ
= @j,@LastVE = N ''    
  end   
  
else    
  begin   
  
if    @LastVE = N ''    and   @lastJ > 11     set    @LastVE = N ' 亿 '    
  
if    @LastVE = N ''    and   @lastJ > 7    and   @lastJ < 10     set    @LastVE = N ' '    
  
if    @LastVE = N ''    and   @lastJ > 3    and   @lastJ < 6     set    @LastVE = N ' '    
  
if    @LastVE = N ''    and   @lastJ > 2     set    @LastVE = N ' '    
  
if    @LastV <> N ' '     set    @lastJ = @j   
  end   
  
set    @LastV = @LastF   
  
set    @J = @J - 1    
  end   
  
if    @lastJ >= 6     set    @K = @K + @LastVE   
  
if    @lastJ >= 3     set    @K = @K + N ' '    
  
if    @lastJ > 1    or   (@lastJ = 1    and   @LastV = N ' ' )    set    @K = @K + N ' '    
    
  
set    @rv = @K   
    
  
return    @rv   
  END 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值