繁体   English   中英

SQl中的舍入函数

[英]Round Function in SQl

选择舍入((10 * 100)/ 115,0)

结果:8

但结果是8.69

但我想显示9

我也在下面的查询中尝试过,但是结果是一样的。

选择舍入((10 * 100)/ 115,0)

请解决我的问题。

谢谢

试试下面

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

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

想法是如果点后的数字大于5,则转到较高的值,否则转到较低的一个

如果您的数据库是oracle,则可以使用以下功能。

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

select ceil(8.69) val from dual;

  select floor(8.69) val from dual;

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

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

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

例如。

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

改成

select Round((10.0*100)/115,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;

这是正在发生的事情:

甚至在使用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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM