22

我正在运行需要将值四舍五入到最接近的整数的 SQL。

我需要的是 45.01 轮到 46。还有 45.49 轮到 46。还有 45.99 轮到 46,也是。我希望一切都提高一个整数。

如何在如下所示的 UPDATE 语句中实现这一点?

Update product SET price=Round
4

7 回答 7

32

您可以使用该ceiling功能;这部分 SQL 代码:

select ceiling(45.01), ceiling(45.49), ceiling(45.99);

每次都会给你“46”。

对于您的更新,我想说:

Update product SET price = ceiling(45.01)

顺便说一句:在 MySQL 上,ceil是 ; 的别名ceiling。不确定其他数据库系统,因此您可能必须使用其中一个,具体取决于您使用的数据库...

引用文档:

CEILING(X)

返回不小于 X 的最小整数值。

和给定的例子:

mysql> SELECT CEILING(1.23);
        -> 2
mysql> SELECT CEILING(-1.23);
        -> -1
于 2009-09-07T11:13:19.250 回答
15

试试天花板...

SELECT Ceiling(45.01), Ceiling(45.49), Ceiling(45.99)

http://en.wikipedia.org/wiki/Floor_and_ceiling_functions

于 2009-09-07T11:12:13.667 回答
5

对于 MS SQL CEILING(您的号码)将四舍五入。FLOOR(您的号码)将其向下取整

于 2013-03-21T08:39:54.377 回答
4

Ceiling 是您要使用的命令。

与 Round 不同,Ceiling 只接受一个参数(您希望四舍五入的值),因此如果您想四舍五入到小数位,您需要先将数字乘以那么多小数位,然后再除。

例子。

我想将 1.2345 舍入到小数点后 2 位。

CEILING(1.2345*100)/100 AS Cost
于 2015-11-16T10:25:24.340 回答
3

如果要四舍五入,请使用 round 函数。当您想获得比您的参数大的最小整数时,请使用上限函数。

例如: select round(843.4923423423,0) from dual 给你 843 和

select round(843.6923423423,0) from dual 给你 844

于 2009-09-07T12:02:44.907 回答
3

结合圆形和天花板以获得适当的圆形。

select ceiling(round(984.375000), 0)) => 984

尽管

select round(984.375000, 0) => 984.000000

select ceil (984.375000) => 985
于 2019-04-18T12:45:26.823 回答
2

这取决于数据库服务器,但通常称为CEILor CEILING。例如,在 MySQL...

mysql> select ceil(10.5);
+------------+
| ceil(10.5) |
+------------+
|         11 | 
+------------+

然后你可以做UPDATE PRODUCT SET price=CEIL(some_other_field);

于 2009-09-07T11:13:19.640 回答