SQL Server经典函数之数字去零

需求:

       针对带有小数点的数字信息,去除小数点后多余的零

可能存在的情况:

    1、精度范围内,出现多余的零    eg:1234.3400     想要的结果为1234.34

    2、精度变大出现的多余的零,或者没有实际小数部分的数据     eg:1234.0      想要的结果为 1234

   3、数据末尾为小数点,但是没有实际的小数    eg:1234.    想要的结果为1234

    ----去零函数 ---去除小数点后多余的零  select dbo.ClearZero('1245.3400')       ---结果为1245.34  
    create function [dbo].[ClearZero]  
    (@Number varchar(200))  
    returns varchar(200)  
    as  
    begin  
        if @Number = '' or @Number is null     ---如果为空,直接返回  
            return null  
        else  
        begin  
            declare @PointIndex int  
            set @PointIndex = charindex('.',@Number)    
            if @PointIndex = 0 return @Number      ---如果不是浮点数,直接返回  
            if @PointIndex = len(@Number) return replace(@Number,'.','')    ----数字末尾有小数点,直接删除返回  
            else  
            begin  
                if right(@Number,1) = '0'               ---递归调用,进行去零操作  
                begin  
                    set @Number = substring(@Number,1,len(@Number) - 1)  
                    return dbo.ClearZero(@Number)  
                end  
                else  
                    return @Number  
            end  
        end  
        return null  
    end  
    GO  
原文地址:https://www.cnblogs.com/kongxiaoshuang/p/7066527.html