如何在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"
,您可以在下面使用 CHARINDEX
和 LEFT
,并使用简单的 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)
以去除不需要的尾随零。
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))
我想使用 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"
,您可以在下面使用 CHARINDEX
和 LEFT
,并使用简单的 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)
以去除不需要的尾随零。
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))