我想使用ROUNDDOWN函数。
当我尝试使用以下查询时,它会给我一个错误,说“'rounddown'不是公认的内置函数名。”
select rounddown(25.227,2)
我的要求是将值舍入为两位小数
对于ex:对于值25.22789,结果应为25.22
并向上舍入
对于ex:对于值25.22789,结果应为25.23
任何帮助?
提前致谢
答案 0 :(得分:7)
使用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 |
答案 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))