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
广告

© . All rights reserved.