把阿拉伯数字转换成汉字

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 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值