我有這個問題:在我的數據庫中存在一個雙精度值的字段。我需要這個值是以一個不變的步驟取整的: 例如我設置了一個20.0的步長,我希望17.8的值變爲20.0,31.2的值變爲40.0等等。sql server更新來自步驟的雙精度舍入
我該怎麼做一個問題?
在此先感謝
我有這個問題:在我的數據庫中存在一個雙精度值的字段。我需要這個值是以一個不變的步驟取整的: 例如我設置了一個20.0的步長,我希望17.8的值變爲20.0,31.2的值變爲40.0等等。sql server更新來自步驟的雙精度舍入
我該怎麼做一個問題?
在此先感謝
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。它是否應該歸結爲零?
您由工序分割值,四捨五入,然後由步長乘以做到這一點。大多數SQL方言都有算術功能。
謝謝你,有可能做一個單一的查詢? – ghiboz 2013-03-12 23:53:51
它應該是,在更新中進行賦值的權利。 – 2013-03-12 23:54:37
差不多。第二步應該使用上限函數,而不是舍入函數。與31.2一起穿過它。 – 2013-03-12 23:58:49
是的,直到20的值四捨五入爲零 – ghiboz 2013-03-13 00:00:23
這不是你原來的問題所述。 – 2013-03-13 00:01:17