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 |         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 表。

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)

試一試

輸出

 team | count
------+-------
 Even |    21
 Odd  |    19

摘要 #

  • 使用 SQL MOD 函式來獲取一個數除以另一個數的模數。
本教程是否有幫助?
© .