SQl中的舍入函数

时间:2014-12-15 05:48:23

标签: sql sql-server

选择Round((10 * 100)/ 115,0)

结果:8

但结果:8.69

但我想显示9

我也试过下面的查询,但结果是一样的..

选择Round((10 * 100)/ 115,0)

请解决我的问题....

由于

6 个答案:

答案 0 :(得分:1)

尝试以下

declare @n decimal(4,1)
select @n = 8.69

select case when PARSENAME(@n,1)>=5 then ceiling(@n) else floor(@n) end 

的想法是,如果点后的数字大于5则转到上限值,否则转到下限

答案 1 :(得分:0)

如果您的数据库是oracle,那么您可以使用以下功能..

对于结果9,使用ceil函数,对于结果8,使用floor函数

select ceil(8.69) val from dual;

  select floor(8.69) val from dual;

答案 2 :(得分:0)

对于较高的值,您可以使用Ceil函数,对于较低的值,您可以在oracle中使用floor函数,如下所示

select ceil(8.69) Upper_val,floor(8.69) Lower_val from dual;

答案 3 :(得分:0)

返回一个整数。尝试在计算前将其转换为小数

例如

select Round((10*100)/115,0)

更改为

select Round((10.0*100)/115,0)

希望这会有所帮助

答案 4 :(得分:0)

如果它的SQL Server请尝试这个:

SELECT CEILING(10.1) AS UpperValue, FLOOR(10.6) AS LowerValue, 
Round(CAST((CAST(10 AS float) * CAST(100 AS float)) / CAST(115 AS float) AS float), 0)
AS YourValue, Round((10*100)/115,0) AS YourOldValue;

答案 5 :(得分:0)

以下是发生的事情:

甚至在使用ROUND功能之前

SELECT 1000/115 /* the result is 8 */

并试试这个

SELECT ROUND(1000.0/15, 0) /* the result is 9.000000 */

如果使用此

SELECT CEILING(1000.0/115) /* the result is 9 */

所以基本上在调用任何函数之前,结果是8。

你可以用这个:

SELECT ROUND(CONVERT(decimal, 1000) / 115, 0)

或者只是这个:

SELECT ROUND(1000.0/15, 0)