如何在sqlserver中使用ROUNDDOWN

时间:2015-09-02 12:08:50

标签: sql-server rounding

我想使用ROUNDDOWN函数。

当我尝试使用以下查询时,它会给我一个错误,说“'rounddown'不是公认的内置函数名。”

select rounddown(25.227,2)

我的要求是将值舍入为两位小数

对于ex:对于值25.22789,结果应为25.22

并向上舍入

对于ex:对于值25.22789,结果应为25.23

任何帮助?

提前致谢

5 个答案:

答案 0 :(得分:7)

使用ROUND()函数的第三个参数进行截断,然后使用CONVERT()将其DECIMAL(x, 2)删除,以消除不需要的尾随零。

Fiddle demo

SELECT CONVERT(DECIMAL(10,2), ROUND(25.227, 2, 1)) RoundDown,
        CONVERT(DECIMAL(10,2), ROUND(25.227, 2, 0)) RoundUp

结果

| RoundDown | RoundUp |
|-----------|---------|
|     25.22 |   25.23 |

答案 1 :(得分:4)

我认为您正在寻找{/ 1}}或CEILING()功能

floor()

(OR)

select CEILING(25.227) //results in 26

修改

  

对于ex:对于值25.22789,结果应为25.22

您可以尝试以下

select FLOOR(25.227) //Results in 25

这将导致select round(25.22789, 2, 2)

答案 2 :(得分:1)

ROUND FUNCTION

您可以使用SELECT ROUND(@num, 2, 1)

根据ROUND说明:

ROUND ( numeric_expression , length [ ,function ] )
  

当省略函数或者值为0(默认值)时,   numeric_expression是四舍五入的。当指定0以外的值时,   numeric_expression被截断。

结果

25.22

CHARINDEX和LEFT

或者,如果您想CHARINDEX并使用简单LEFT执行"ROUND DOWN"

,您可以在关注中使用ROUND"ROUND UP"
DECLARE @num DECIMAL(16,3) = 25.227

SELECT LEFT(@num,CHARINDEX('.',@num)+2) as [RoundDown],
       ROUND(@num,2) as [RoundUp]

<强> RESULT

RoundDown   RoundUp
25.22       25.23

<强>更新

根据ROUNDUP的评论,您可以使用以下内容:

SELECT ROUND(22.22289 + 0.005, 2) as [RoundUp1]

<强> RESULT

25.23

<强>样本

您可以在 SQL FIDDLE

进行测试

答案 3 :(得分:1)

对于四舍五入,只需使用一些简单的数学运算(比您希望舍入的小一位小数):

SELECT ROUND(25.22789 - 0.005, 2)

输出25.22

对于四舍五入,只需使用ROUND:

SELECT ROUND(22.22789, 2)

输出25.23

答案 4 :(得分:0)

您也可以使用CAST:

    declare @num decimal(18,5) = 22.22719
    select @num, CAST(@num as decimal(18,3))