CEIL(x) 和 CEILING(x)取整函数的含义相同,返回不小于 x 的最小整数值,返回值转化为一个 BIGINT。
(1)将一个正数向上取整
mysql> SELECT CEIL(-2.5),CEILING(-2.5); +------------+---------------+ | CEIL(-2.5) | CEILING(-2.5) | +------------+---------------+ | -2 | -2 | +------------+---------------+ 1 row in set (0.04 sec)
由执行结果可知,-2.5 为负数,不小于 -2.5 的最小整数为 -2,因此返回值为 -2。
(2)将一个负数向上取整
mysql> SELECT CEIL(2.5),CEILING(2.5); +-----------+--------------+ | CEIL(2.5) | CEILING(2.5) | +-----------+--------------+ | 3 | 3 | +-----------+--------------+ 1 row in set (0.04 sec)
由执行结果可知,不小于 2.5 的最小整数为 3,因此返回值为 3。
(3)如果向 CEIL() 和 CEILING() 函数传递的是数字字符串,该函数会自动将字符串转换成数字。
mysql> select CEIL('-2.5'), CEILING('2.5'); +--------------+----------------+ | CEIL('-2.5') | CEILING('2.5') | +--------------+----------------+ | -2 | 3 | +--------------+----------------+ 1 row in set (0.04 sec)
由执行结果可知,CEIL() 和 CEILING() 函数将字符串转换成数字后再进行向上取整。
(4)如果传递给 CEIL() 和 CEILING() 函数的字符串中包含非数字字符,它们将怎样进行处理呢?
mysql> select CEIL('-2.5X'), CEILING('2.5X'), CEIL('X-2.5'), CEILING('X2.5'); +---------------+-----------------+---------------+-----------------+ | CEIL('-2.5X') | CEILING('2.5X') | CEIL('X-2.5') | CEILING('X2.5') | +---------------+-----------------+---------------+-----------------+ | -2 | 3 | 0 | 0 | +---------------+-----------------+---------------+-----------------+ 1 row in set (0.04 sec)
由执行结果可知,CEIL() 和 CEILING() 函数将从左到右截取符合数字格式的字符串,然后将它转换成数字进行向上取整。如果传递给 CEIL() 和 CEILING() 函数的字符串以非数字开头,则返回0。
(5)如果传递 NULL 给 CEIL() 和 CEILING() 函数,则返回 NULL。
mysql> select CEIL(NULL), CEILING(NULL); +------------+---------------+ | CEIL(null) | CEILING(null) | +------------+---------------+ | NULL | NULL | +------------+---------------+ 1 row in set (0.04 sec)