需求:
針對帶有小數點的數字信息,去除小數點后多余的零
可能存在的情況:
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