Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 用5的倍数将浮点列四舍五入到下一个数字_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

Sql 用5的倍数将浮点列四舍五入到下一个数字

Sql 用5的倍数将浮点列四舍五入到下一个数字,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,目前我有一个定义为float的列(ex16.98),我需要能够获取该值并找到5的下一个最高倍数 例子 Value 16.98 Should Return 17.00 Value 10.46 Should Return 10.50 Value 9.11 Should Return 9.15 Value 8.10 Should Return 8.10 Value 18.65

目前我有一个定义为float的列(ex16.98),我需要能够获取该值并找到5的下一个最高倍数

例子

Value 16.98           Should Return 17.00  
Value 10.46           Should Return 10.50    
Value  9.11           Should Return  9.15  
Value  8.10           Should Return  8.10  
Value  18.65          Should Return 18.65  

请注意,如果是5的倍数,那么它应该返回自身。

如果使用MySql,请尝试以下操作:

SELECT Format((ceiling(cast(unitprice*100 as int)/5.0)*5.0)/100.0, 'g18')
From table
SELECT (ceil(cast(val*100 as signed)/5.0)*5.0)/100.0 from tbl;
CAST
inside
CEIL
非常有用-它消除了舍入误差

在SQL SERVER中:

SELECT (ceiling(cast(val*100 as int)/5.0)*5.0)/100.0 from tbl;
其中
tbl
包含要转换的值。

尝试以下操作:

SELECT
CEILING(16.98 * 20) / 20,
CEILING(10.46 * 20) / 20,
CEILING(9.11 * 20) / 20,
CEILING(8.10 * 20) / 20,
CEILING(18.65 * 20) / 20
因此,查询将如下所示:

SELECT CEILING(yourColumn * 20) / 20 AS Result FROM yourTable;

哪个数据库引擎?SQL SERVER 2012这不适用于我拥有的39.62的数字这返回了45.00我需要它返回39.65。更新了查询@Kd5490Nice and easy:D