MySQL - 取模運算子(%, MOD)



MySQL 的**取模運算子**(% 或 MOD)返回從儲存在 MySQL 中的資料執行的除法運算(右運算元除以左運算元)獲得的餘數。

取模運算子也是算術運算子的一部分,因為它只對數字執行。它可以與各種 SQL 語句一起使用,例如 SELECT、DELETE、UPDATE 等。

語法

以下是 MySQL MOD 運算子的語法:

[SELECT|DELETE|UPDATE] x MOD y;

其中,

  • **'x'** 是被除數,即您要查詢餘數的數字。
  • **'y'** 是除數,即您要用來除以 x 的數字。

示例

以下是“MOD”運算子在兩個普通數字上的示例。這些數字沒有儲存在 MySQL 資料庫表中,但結果顯示為 SELECT 語句的結果集:

SELECT 62555 MOD 59;

輸出

這將產生以下結果:

62555 MOD 59
15

示例

讓我們再看一個使用浮點值的簡單示例:

SELECT 6255.55855 MOD 987546.965;

輸出

這將產生以下結果:

6255.55855 MOD 987546.965
6255.55855

示例

讓我們使用 CREATE 語句建立一個名為**CUSTOMERS**的表,如下所示:

CREATE TABLE CUSTOMERS (
   ID INT AUTO_INCREMENT,
   NAME VARCHAR(20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

以下查詢將 7 條新記錄新增到上面建立的表中:

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES 
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'Kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );

執行以下命令以檢索 CUSTOMERS 中的所有記錄:

Select * From CUSTOMERS;

以下是 CUSTOMERS 表:

ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Hyderabad 4500.00
7 Muffy 24 Indore 10000.00

在這裡,我們使用**“%”**運算子來顯示 CUSTOMERS 的 AGE 是偶數還是奇數:

SELECT NAME, IF(AGE%2 = 1, 'Odd', 'Even') as OddOrEven
FROM CUSTOMERS;

輸出

這將產生以下結果:

NAME OddOrEven
Ramesh 偶數
Khilan 奇數
Kaushik 奇數
Chaitali 奇數
Hardik 奇數
Komal 偶數
Muffy 偶數

示例

在此示例中,我們使用取模“%”運算子與**DELETE**語句一起從 AGE 列中具有偶數值的 CUSTOMERS 表中刪除記錄:

DELETE FROM CUSTOMERS WHERE AGE%2 = 0;

輸出

以上查詢的輸出如下所示:

Query OK, 3 rows affected (0.01 sec)

驗證

執行以下查詢以驗證上述執行的操作是否已反映:

SELECT * FROM CUSTOMERS;

如我們在下面的輸出中看到的,已刪除 AGE 為偶數的記錄。

ID NAME AGE ADDRESS SALARY
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00

示例

除了 SELECT 和 DELETE 語句之外,我們還可以將此運算子與**UPDATE**語句一起使用。

以下查詢更新先前建立的 CUSTOMERS 表中的“AGE”列。它將 AGE 設定為取模運算 (123 % 10) 的結果,即 3。此更新僅應用於“NAME”列為“Khilan”的行:

UPDATE CUSTOMERS
SET AGE = (123%10)
WHERE NAME = 'Khilan';

輸出

這將產生以下結果:

Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

驗證

執行以下查詢以驗證更改是否已反映:

Select * From CUSTOMERS;

以下是更新後的 CUSTOMERS 表:

ID NAME AGE ADDRESS SALARY
2 Khilan 3 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
廣告