在SQL Server中四舍五入到最接近的500或1000
可能重复:在SQL Server中四舍五入到最接近的500或1000,sql,sql-server,Sql,Sql Server,可能重复: 在SQL Server中,是否可以将数字四舍五入到最接近的500或1000 例如: 14425.00->14500.00 14585.00->15000.00始终四舍五入: SELECT (((col+250)/500)*500) FROM table; ((value+499)/500)*500 向上或向下取整: ((value+250)/500)*500 我会用这个,用数据举例 declare @num int set @num = 749 select (round(
在SQL Server中,是否可以将数字四舍五入到最接近的500或1000 例如: 14425.00->14500.00
14585.00->15000.00始终四舍五入:
SELECT (((col+250)/500)*500) FROM table;
((value+499)/500)*500
向上或向下取整:
((value+250)/500)*500
我会用这个,用数据举例
declare @num int
set @num = 749
select (round(((@num+250)/500),0)*500)
Result = 500
或者证明它是有效的
declare @num int
set @num = 750
select (round(((@num+250)/500),0)*500)
Result = 1000
然而,将其包装成一个通用函数是明智的
CREATE FUNCTION ufnRoundMyValue
(
@val int,
@base int
)
RETURNS int
AS
BEGIN
declare @res int
select @res = (round(((@val+(@base/2))/@base),0)*@base)
RETURN @res
END
GO
那就是
select dbo.ufnRoundMyValue(749,500)
无论你在哪里需要它它都是一样的,因为它总是不想凑在一起。