Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql server更新步骤中的双舍入_Sql_Sql Server 2008_Sql Update - Fatal编程技术网

sql server更新步骤中的双舍入

sql server更新步骤中的双舍入,sql,sql-server-2008,sql-update,Sql,Sql Server 2008,Sql Update,我有一个问题:在我的数据库中有一个双值字段。我需要将该值四舍五入为一个常数步长: 例如,我将步长设置为20.0,希望值17.8变为20.0,值31.2变为40.0等等 我如何通过查询实现这一点 提前感谢您可以将值除以步长,四舍五入,然后乘以步长。大多数SQL方言都有算术函数 declare @stepsize float = 20.0 declare @val float = 17.6 select CEILING(@val / @stepsize) * @stepsize -- Re

我有一个问题:在我的数据库中有一个双值字段。我需要将该值四舍五入为一个常数步长: 例如,我将步长设置为20.0,希望值17.8变为20.0,值31.2变为40.0等等

我如何通过查询实现这一点


提前感谢

您可以将值除以步长,四舍五入,然后乘以步长。大多数SQL方言都有算术函数

declare @stepsize float = 20.0

declare @val float = 17.6

select CEILING(@val / @stepsize) * @stepsize    -- Result 20.0

set @val = 31.2

select CEILING(@val / @stepsize) * @stepsize    -- Result 40.0

从你的问题来看,不清楚6.0应该用20.0的步长“四舍五入”到什么。它应该舍入到零吗?

应该是,在更新中在作业右侧进行。差不多。第二步应该使用上限函数,而不是舍入函数。是的,天花板向上取整是正确的,地板向下取整是正确的,或者加上。5和四舍五入。这不是你最初的问题所说的。