SQL 数值函数速查:ROUND、CEIL、FLOOR、MOD 怎么用?
在 SQL 查询和面试中,数值函数是非常高频的考点。无论是处理金额精度,还是做分页运算,都绕不开 ROUND、CEIL、FLOOR、MOD 这几个函数。
本篇文章帮你快速速查核心用法,并配合示例代码加深记忆。
一、ROUND:四舍五入
ROUND 用于对数字进行四舍五入。
语法:
ROUND(number, decimals)
● number:要处理的数字。
● decimals:保留的小数位数,可选,默认为 0。
示例:
SELECT ROUND(123.456, 2) AS result;
输出:
123.46
如果省略 decimals:
SELECT ROUND(123.456) AS result;
输出:
123
二、CEIL:向上取整
CEIL(或 CEILING)会返回大于或等于给定数值的最小整数。
示例:
SELECT CEIL(10.2) AS result;
输出:
11
SELECT CEIL(-10.2) AS result;
输出:
-10
应用场景:分页时计算总页数。
-- 每页 10 条数据,查询 95 条记录需要几页?
SELECT CEIL(95 / 10) AS pages;
输出:
10
三、FLOOR:向下取整
FLOOR 会返回小于或等于给定数值的最大整数。
示例:
SELECT FLOOR(10.9) AS result;
输出:
10
SELECT FLOOR(-10.9) AS result;
输出:
-11
四、MOD:取余数
MOD 用于求余数,常用于循环和分组计算。
语法:
MOD(dividend, divisor)
● dividend:被除数。
● divisor:除数。
示例:
SELECT MOD(10, 3) AS result;
输出:
1
SELECT MOD(-10, 3) AS result;
输出:
-1
应用场景:按奇偶分组
SELECT id, name,
CASE WHEN MOD(id, 2) = 0 THEN 'even'
ELSE 'odd'
END AS group_flag
FROM users;
五、面试常见考点
1. ROUND vs TRUNCATE
ROUND 会四舍五入。
TRUNCATE 直接截断,不做四舍五入。
2. CEIL vs FLOOR 的区别
CEIL(10.1) = 11,FLOOR(10.9) = 10。
注意负数时:CEIL(-10.2) = -10,FLOOR(-10.2) = -11。
3. MOD 的符号问题
MySQL 的 MOD(-10, 3) = -1。
不同数据库实现可能略有区别,面试时要提到这点。
六、总结
ROUND:四舍五入,常用于金额精度控制。
CEIL:向上取整,适合做分页计算。
FLOOR:向下取整,取整时很常用。
MOD:取余数,适合做循环分组或奇偶计算。
掌握这几个函数,不仅能让你在 SQL 面试中轻松应对,还能在日常开发中写出更高效的查询逻辑。