我想使用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
或者你可以使用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]
结果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)
对于四舍五入,只需使用ROUND:
SELECT ROUND(22.22789, 2)
也可以使用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))