SQL MOD:返回一數除以另一數的餘數

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

這個教學對您有幫助嗎?