在SQL中舍入到n个重要数字

Pau*_*aul 20 sql t-sql sql-server rounding significant-digits

我希望能够在SQL中将数字舍入为n个有效数字.所以:

123.456 rounded to 2sf would give 120
0.00123 rounded to 2sf would give 0.0012
Run Code Online (Sandbox Code Playgroud)

我知道ROUND()函数,它舍入到n个小数位而不是有效数字.

Bra*_*ann 20

select round(@number,@sf-1- floor(log10(abs(@number)))) 应该做的伎俩!

在您的两个示例上成功测试.

编辑:在@ number = 0上调用此函数将不起作用.在使用此代码之前,您应该为此添加测试.

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
Run Code Online (Sandbox Code Playgroud)