摘要:在本教學中,您將學習如何使用 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
函數取得一個數除以另一個數的模數。
這個教學對您有幫助嗎?