如何在sql server中使用ROUNDDOWN

How to use ROUNDDOWN in sqlserver

我想使用 ROUNDDOWN 函数。

当我尝试使用以下查询时,它给我一个错误提示“'rounddown' 不是可识别的内置函数名称。”

select rounddown(25.227,2)

我的要求是将值四舍五入到两位小数

例如:对于值 25.22789,结果应为 25.22

也汇总

例如:对于值 25.22789,结果应为 25.23

有什么帮助吗?

提前致谢

我认为您正在寻找 CEILING()floor() 函数,例如

select CEILING(25.227) //results in 26

(或)

select FLOOR(25.227) //Results in 25

编辑:

for ex: for value 25.22789 result should be 25.22

你可以试试下面的方法

select round(25.22789, 2, 2)

这将导致 25.22000

舍入函数

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

根据ROUND描述:

ROUND ( numeric_expression , length [ ,function ] )

When function is omitted or has a value of 0 (default), numeric_expression is rounded. When a value other than 0 is specified, numeric_expression is truncated.

结果

25.22

CHARINDEX 和 LEFT

或者,如果您想执行 "ROUND DOWN",您可以在下面使用 CHARINDEXLEFT,并使用简单的 ROUND 来执行 "ROUND UP"

DECLARE @num DECIMAL(16,3) = 25.227

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

结果

RoundDown   RoundUp
25.22       25.23

更新

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

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

结果

25.23

演示版

您可以在SQL FIDDLE

进行测试

要四舍五入,只需使用一些简单的数学运算(比您要四舍五入的小数点后一位小数):

SELECT ROUND(25.22789 - 0.005, 2)

输出 25.22

要四舍五入,只需使用 ROUND:

SELECT ROUND(22.22789, 2)

输出 25.23

使用 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 |

你也可以使用 CAST:

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