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 |
这里,我们使用 "%" 运算符来显示客户的年龄是奇数还是偶数 -
SELECT NAME, IF(AGE%2 = 1, 'Odd', 'Even') as OddOrEven FROM CUSTOMERS;
输出
这将产生以下结果 -
NAME | OddOrEven |
---|---|
Ramesh | Even |
Khilan | Odd |
Kaushik | Odd |
Chaitali | Odd |
Hardik | Odd |
Komal | Even |
Muffy | Even |
示例
在此示例中,我们使用模数"%"运算符和 DELETE 语句从 CUSTOMERS 表中删除 AGE 列值为偶数的记录 -
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 |