SQL Server中文大写金额转化函数

SQL Server 中文金额 、大写金额:
CREATE FUNCTION fn_GetChineseCost
(
  @Cost float
)
RETURNS varchar(50)
AS
----大写金额----
BEGIN
     declare @returnStr varchar(50)
     if (@Cost >= 1000000000)
        Begin
            set @returnStr = '##########'
            return @returnStr
        end 
     set @returnStr = '00000000000'
     set @returnStr = right(@returnStr + convert(varchar,convert(decimal(11,2),round(@cost,2))),12)
     set @returnStr = replace(@returnStr,'0','')
     set @returnStr = replace(@returnStr,'1','')
     set @returnStr = replace(@returnStr,'2','')
     set @returnStr = replace(@returnStr,'3','')
     set @returnStr = replace(@returnStr,'4','')
     set @returnStr = replace(@returnStr,'5','')
     set @returnStr = replace(@returnStr,'6','')
     set @returnStr = replace(@returnStr,'7','')
     set @returnStr = replace(@returnStr,'8','')
     set @returnStr = replace(@returnStr,'9','')
              
     set @returnStr = @returnStr + ''
     set @returnStr =  stuff(@returnStr,len(@returnStr)-1,0,'')
     set @returnStr =  replace(@returnStr,'.','')
     set @returnStr =  stuff(@returnStr,len(@returnStr)-5,0,'')
     set @returnStr =  stuff(@returnStr,len(@returnStr)-7,0,'')
     set @returnStr =  stuff(@returnStr,len(@returnStr)-9,0,'')
     set @returnStr =  stuff(@returnStr,len(@returnStr)-11,0,'')
     set @returnStr =  stuff(@returnStr,len(@returnStr)-13,0,'')
     set @returnStr =  stuff(@returnStr,len(@returnStr)-15,0,'')
     set @returnStr =  stuff(@returnStr,len(@returnStr)-17,0,'')
     set @returnStr =  stuff(@returnStr,len(@returnStr)-19,0,'亿')

     set @returnStr =  replace(@returnStr,'零亿','')
     set @returnStr =  replace(@returnStr,'零千','')
     set @returnStr =  replace(@returnStr,'零百','')
     set @returnStr =  replace(@returnStr,'零拾','')
     set @returnStr =  replace(@returnStr,'零零零','')
     set @returnStr =  replace(@returnStr,'零零','')
     set @returnStr =  replace(@returnStr,'零万','')
     set @returnStr =  replace(@returnStr,'零元','')
     set @returnStr =  replace(@returnStr,'零角','')
     set @returnStr =  replace(@returnStr,'零分','')

     while left(@returnStr,1) = ''
        Begin
        set @returnStr =  right(@returnStr,len(@returnStr)-1)
        end
     if ((left(@returnStr,1)='')) 
     begin
      set @returnStr =  right(@returnStr,len(@returnStr)-1)
     end
     if ((left(@returnStr,1)='')) 
     begin
      set @returnStr =  right(@returnStr,len(@returnStr)-1)
     end
     while left(@returnStr,1) = ''
        Begin
        set @returnStr =  right(@returnStr,len(@returnStr)-1)
        end
     while right(@returnStr,1) = ''
        Begin
        set @returnStr =  left(@returnStr,len(@returnStr)-1)
        end

     set @returnStr =  replace(@returnStr,'亿万','亿零')
     set @returnStr =  replace(@returnStr,'零元','')
     set @returnStr =  replace(@returnStr,'零零零','')
     set @returnStr =  replace(@returnStr,'零零','')

     if (@returnStr='') 
     begin
      set @returnStr =  '零元'
     end
     if ((right(@returnStr,1)='')) 
     begin
      set @returnStr =  @returnStr + ''
     end
     return @returnStr
END

select dbo.fn_GetChineseCost(987654321.23) as 金额 

 

posted @ 2024-02-22 14:59  每天进步多一点  阅读(364)  评论(0)    收藏  举报