none
【SQL入门求助】请问有没有以0为中点靠近或远离的舍入函数? RRS feed

  • 问题

  • 如题,ceiling是始终向上舍入,如ceiling(1.1) = 2;ceiling(-1.1) = 1。floor则是始终向下舍入,floor(1.1) = 1;floor(-1.1) = -2,那么有没有现成的靠近或偏离0的舍入函数,类似excel里rounddown和roundup的函数??

    数学函数里似乎没有,想来这里求证一下,好心死,另外,如果要自定义这种功能的函数,可否给个实例指引?

    2011年9月20日 1:37

答案

  • ROUND默认是四舍五入,满足不了,至于自定义舍入暂时搞不懂。简单写了个自定义函数模拟rounddown

    CREATE FUNCTION dbo.RoundDown (@s DECIMAL(20,10))
    RETURNS INT
    AS 
        BEGIN
          RETURN(SELECT CASE WHEN @s >= 0 THEN FLOOR(@s) ELSE CEILING(@s) END)
        END

    roundup的话就将FLOOR和CEILING对调位置即可。

    2011年9月20日 2:22

全部回复

  • Take look at 'ROUND (Transact-SQL)' in books online, has sample code there.
    2011年9月20日 2:05
  • ROUND默认是四舍五入,满足不了,至于自定义舍入暂时搞不懂。简单写了个自定义函数模拟rounddown

    CREATE FUNCTION dbo.RoundDown (@s DECIMAL(20,10))
    RETURNS INT
    AS 
        BEGIN
          RETURN(SELECT CASE WHEN @s >= 0 THEN FLOOR(@s) ELSE CEILING(@s) END)
        END

    roundup的话就将FLOOR和CEILING对调位置即可。

    2011年9月20日 2:22
  • 嗯,自己写就是了,自己动手,丰衣足食
    想不想时已是想,不如不想都不想。
    2011年9月20日 4:34
    版主