如何在sqlserver中使用ROUNDDOWN



我想使用ROUNDDOWN函数

当我尝试使用以下查询时,它给了我一个错误,说"'舍入'不是一个可识别的内置函数名。"

select rounddown(25.227,2)

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

for example: for value 25.22789 result应为25.22

和四舍五入也

for example: for value 25.22789 result应为25.23

帮忙吗?

Thanks in advance

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

小提琴演示

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 |

我认为您正在寻找CEILING()floor()功能,如

select CEILING(25.227) //results in 26

(或)

select FLOOR(25.227) //Results in 25
编辑:

for example: for value 25.22789 result应为25.22

你可以试试下面的

select round(25.22789, 2, 2)

这将导致25.22000

轮函数

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

根据ROUND描述:

ROUND ( numeric_expression , length [ ,function ] )

当function省略或值为0(默认)时,Numeric_expression是舍入的。当指定的值不是0时,Numeric_expression被截断

结果

25.22

CHARINDEX and LEFT

或者你可以使用CHARINDEXLEFT,如果你想做"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]
结果

RoundDown   RoundUp
25.22       25.23

根据ROUNDUP的注释,您可以在以下地方使用:

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

25.23

在<<p>您可以测试它kbd> SQL小提琴

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

SELECT ROUND(25.22789 - 0.005, 2)

输出25.22

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

SELECT ROUND(22.22789, 2)

输出25.23

也可以使用CAST:

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

来自未来的问候。

乘以它,再除以它?

declare @myroundednumber numeric(9,4)=25.227
select 'Original' version,@myroundednumber figure 
select 'Rounded Up',cast(ceiling(25.227 *100)/100 as decimal(9,2)) 
select 'Rounded Down',cast(floor(25.227 *100)/100 as decimal(9,2))

最新更新