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  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM