在SQL UPDATE中将值向上舍入为最接近的整数

问题描述 投票:18回答:7

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

我需要的是45.01轮到46轮。还有45.49轮到46轮。还有45.99轮到46轮。我希望一切都达到一个整数位。

如何在UPDATE语句中实现此目的,如下所示?

Update product SET price=Round
sql sql-update rounding
7个回答
25
投票

您可以使用ceil函数,至少在MySQL上;这部分SQL代码:

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

每次都会让你“46”。

为了您的更新,我会说:

Update product SET price = ceil(45.01)

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

引用文档:

CEILING(X)

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

给出的例子:

mysql> SELECT CEILING(1.23);
        -> 2
mysql> SELECT CEILING(-1.23);
        -> -1

14
投票

试试天花板......

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

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


4
投票

对于MS SQL CEILING(您的号码)将对其进行四舍五入。 FLOOR(您的电话号码)会将其舍入


4
投票

天花板是您要使用的命令。

与Round不同,Ceiling只接受一个参数(您想要向上舍入的值),因此如果要舍入到小数位,则需要先将该数字乘以多个小数位,然后再进行除法。

例。

我想将1.2345向上舍入到小数点后两位。

CEILING(1.2345*100)/100 AS Cost

3
投票

如果你想要四舍五入,那就使用圆函数。当你想获得比你的参数更大的最小整数时,使用天花板功能。

例如:从双向选择回合(843.4923423423,0)给你843和

从双向选择回合(843.6923423423,0)给你844


2
投票

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

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

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


1
投票

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

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

select round(984.375000, 0) => 984.000000

select ceil (984.375000) => 985
© www.soinside.com 2019 - 2024. All rights reserved.