SQL 模数:返回另一个数对某数除所得余数

摘要:在本教程中,您将了解如何使用 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 函数计算模数所得的结果。

abOracle、MySQLPostgreSQL、SQL Server、IBM DB2
11433
11-4-1 3
-114 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 表。

employees_table

假设您需要将员工分为两个团队:奇数和偶数。奇数团队包括员工 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 function example

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

本教程是否有帮助?