摘要:在本教程中,您將學習如何使用 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 | 3Code language: SQL (Structured Query Language) (sql)您可以使用模運算子 (%) 來獲取 13 除以 3 的模數,如下所示
SELECT 13 % 3 AS remainder;Code language: SQL (Structured Query Language) (sql)輸出
remainder
-----------
1Code 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)輸出
team | count
------+-------
Even | 21
Odd | 19摘要 #
- 使用 SQL
MOD函式來獲取一個數除以另一個數的模數。
本教程是否有幫助?