SqlServer经典函数之数字去零

需求:

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

可能存在的情况:

    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

 

posted @ 2015-08-08 14:50  专注、坚持  阅读(1847)  评论(0编辑  收藏  举报