摘要:在本教程中,您将了解如何使用 SQL MOD
函数,该函数会返回某数除以另一数所得的余数。
SQL MOD 函数简介
MOD
函数会返回某数除以另一数所得的余数(模数)。以下展示了 MOD
函数的语法
MOD(a,b);
Code language: SQL (Structured Query Language) (sql)
MOD
函数接受两个参数。
- a 是一个数字或数字表达式,用于进行除法。
- b 是除数,它也是一个数字或表达式,用于除以被除数。
如果 b 为 0,大多数数据库系统会发出除以零的错误,Oracle 数据库除外。Oracle 数据库将返回被除数 (a)。
除了 Oracle 和 MySQL,大多数数据库系统都使用以下公式来计算模数
a - b*(FLOOR(a/b));
Code language: SQL (Structured Query Language) (sql)
下表展示了使用 MOD
函数计算模数所得的结果。
a | b | Oracle、MySQL | PostgreSQL、SQL Server、IBM DB2 |
---|---|---|---|
11 | 4 | 3 | 3 |
11 | -4 | -1 | 3 |
-11 | 4 | 2 | -3 |
-11 | -4 | -3 | -3 |
除了 MOD
函数,一些数据库系统还提供一个内置模运算符 %,如 Microsoft SQL、
MySQL 和 PostgresQL,这等同于 MOD
函数。
SQL MOD 示例
以下语句将数字 33 除以 5,得出的结果中整数部分为 6,余数为 4。
SELECT 33/5 as integer,
MOD(33,5) as remainder;
Code language: SQL (Structured Query Language) (sql)
integer | remainder
---------+-----------
6 | 3
(1 row)
Code language: SQL (Structured Query Language) (sql)
您可以使用模运算符 (%) 获取 13 除以 3 的模数,如下所示
SELECT 13 % 3 AS remainder;
Code language: SQL (Structured Query Language) (sql)
remainder
-----------
1
(1 row)
Code language: SQL (Structured Query Language) (sql)
让我们来看看 示例数据库 中的 employees
表。

假设您需要将员工分为两个团队:奇数和偶数。奇数团队包括员工 ID 为奇数的员工,偶数团队包括员工 ID 为偶数的员工。
以下语句在 CASE
表达式中使用了 MOD
函数,以将员工分配到奇数或偶数团队。 GROUP
BY
从句将员工按团队进行分组,而 COUNT
函数会返回每个团队中的员工人数。
SELECT
CASE MOD(employee_id, 2)
WHEN 0 THEN 'Even'
ELSE 'Odd'
END AS team,
COUNT(employee_id)
FROM
employees
GROUP BY team;
Code language: SQL (Structured Query Language) (sql)

在本教程中,您已了解了如何使用 SQL MOD
函数来获取另一个数除以某数所得的模数。
本教程是否有帮助?