I would like to be able to round a number to n significant figures in SQL. So:
123.456 rounded to 2sf would give 120
0.00123 rounded to 2sf would give 0.0012
select round(@number,@sf-1- floor(log10(abs(@number)))) should do the trick !
Successfully tested on your two examples.
Edit : Calling this function on @number=0 won't work. You should add a test for this before using this code.
create function sfround(@number float, @sf int) returns float as begin declare @r float select @r = case when @number = 0 then 0 else round(@number ,@sf -1-floor(log10(abs(@number )))) end return (@r) end