- 类别:
:doc:`/sql-reference/functions-numeric`(舍入和截断)
CEIL¶
返回来自 input_expr
的值,这些值四舍五入到最接近的相等或更大的整数值,或者四舍五入到具有指定小数位数、最接近的相等或更大的值。
- 另请参阅:
语法¶
CEIL( <input_expr> [, <scale_expr> ] )
实参¶
input_expr
要执行操作的值或表达式。数据类型应为数值数据类型之一,例如 FLOAT 或 NUMBER。
scale_expr
输出应包含在小数点后的位数。表达式的计算结果应为 -38 到 +38 之间的整数。
默认
scale_expr
值为零,这意味着该函数会移除小数点后的所有数字。有关负小数位数的信息,请参阅下面的使用说明。
返回¶
返回值的数据类型是 NUMBER(精确度、范围)。
如果输入大小大于或等于零,则输出范围通常与输入范围匹配。
如果输入大小为负,则输出范围为 0。
- 例如:
CEIL(3.14, 1) 返回的数据类型为 NUMBER(4, 1)。
CEIL(3.14, 0) 返回的数据类型为 NUMBER(4, 0)。
CEIL(33.33, -1) 返回的数据类型为 NUMBER(5, 0)。
如果大小为零,则该值实际上是一个整数。
使用说明¶
如果
scale_expr
为负数,则指定需要调整数字的小数点 之前 的位数。例如,如果大小为 -2,则结果是 100 的倍数。如果
scale_expr
大于输入表达式大小,则该函数不生效。如果
input_expr
或scale_expr
为 NULL,则结果为 NULL。当负数向上取整时,该值更接近于 0。例如,CEIL(-1.9) 的值取 -1,而不是取 -2。
如果将数字向上取整使数字超出数据类型值的范围,则会返回错误。
示例¶
此示例展示了不带 scale_expr
参数的函数:
SELECT CEIL(135.135), CEIL(-975.975); +---------------+----------------+ | CEIL(135.135) | CEIL(-975.975) | |---------------+----------------| | 136 | -975 | +---------------+----------------+
此示例演示了具有参数的 scale_expr
函数,包括将大小设置为负数的函数:
创建并填写表:
CREATE TRANSIENT TABLE test_ceiling (n FLOAT, scale INTEGER); INSERT INTO test_ceiling (n, scale) VALUES (-975.975, -1), (-975.975, 0), (-975.975, 2), ( 135.135, -2), ( 135.135, 0), ( 135.135, 1), ( 135.135, 3), ( 135.135, 50), ( 135.135, NULL) ;输出:
SELECT n, scale, ceil(n, scale) FROM test_ceiling ORDER BY n, scale; +----------+-------+----------------+ | N | SCALE | CEIL(N, SCALE) | |----------+-------+----------------| | -975.975 | -1 | -970 | | -975.975 | 0 | -975 | | -975.975 | 2 | -975.97 | | 135.135 | -2 | 200 | | 135.135 | 0 | 136 | | 135.135 | 1 | 135.2 | | 135.135 | 3 | 135.135 | | 135.135 | 50 | 135.135 | | 135.135 | NULL | NULL | +----------+-------+----------------+