MySQL MOD()函数详解与Python对比

✅ 一、MySQL 的 MOD() 函数是怎么计算的?

MOD(x, y) 是取余数 的操作,即:

👉 x % y(在数学上就是 x 除以 y 的余数)

🔍 示例解析:

sql 复制代码
SELECT MOD(31, 8), MOD(234, 0), MOD(46.6, 6);
表达式 计算过程 结果
MOD(31, 8) 31 ÷ 8 = 3 × 8 + 7 → 余数是 7 7
MOD(234, 0) 任何数除以 0 都是未定义 → MySQL 返回 NULL NULL
MOD(46.6, 6) 46.6 ÷ 6 ≈ 7.766... → 6×7 = 42 → 46.6 - 42 = 4.6 4.6

✅ 所以结果是:7, NULL, 4.6

⚠️ 注意:MySQL 的 MOD() 支持浮点数!这和一些语言不同。


✅ 二、Python 中有没有类似的函数?

✔️ 是的,Python 有 % 操作符,功能与 MOD() 完全一致!

🧪 Python 示例:
python 复制代码
print(31 % 8)        # 输出: 7
print(46.6 % 6)      # 输出: 4.6

但注意:

python 复制代码
print(234 % 0)       # 报错!ZeroDivisionError: integer division or modulo by zero

❌ 和 MySQL 一样,不能对 0 取模,否则会报错。


✅ 三、MySQL vs Python 的 MOD / % 对比

特性 MySQL MOD(x,y) Python x % y
功能 取余数 取余数
是否支持浮点数 ✅ 支持(如 46.6 % 6 ✅ 支持
除零处理 返回 NULL 抛出 ZeroDivisionError 异常
符号规则 与数学一致(正负号按标准处理) 与 Python 整数除法一致(负数时行为特殊)

📌 小知识:负数取模的行为差异

比如:

sql 复制代码
MOD(-7, 3) → 在 MySQL 中返回 2 (因为 -7 = -3×3 + 2)
sql 复制代码
-7 % 3 → 在 Python 中也返回 2

👉 实际上,MySQL 和 Python 在负数取模上的行为是一致的,都遵循"余数非负"的规则。


✅ 四、总结

问题 回答
MOD(31,8) 怎么算? 31 ÷ 8 = 3 余 7,所以结果是 7
MOD(234,0) 为什么是 NULL? 除以 0 是非法操作,MySQL 返回 NULL
MOD(46.6,6) 是多少? 46.6 - 6×7 = 46.6 - 42 = 4.6
Python 有吗? ✅ 有,用 % 操作符,完全等价
区别在哪? MySQL 返回 NULL,Python 抛异常;其他情况基本一致

✅ 推荐写法(Python)

python 复制代码
# 等价于 MOD(31,8)
result = 31 % 8  # 输出: 7

# 等价于 MOD(46.6,6)
result = 46.6 % 6  # 输出: 4.6
相关推荐
AAA@峥13 小时前
CentOS7 源码编译安装 MySQL5.7|SQL 基础操作 + 备份恢复完整实战
运维·数据库·sql·centos
IvorySQL21 小时前
PG 日报|修复高 IO 并发场景,解决预读机制耗尽本地缓冲区缺陷
数据库·人工智能·sql·postgresql·区块链
qq_150841991 天前
SQL的insert和update二合一指令
java·数据库·sql
宸津-代码粉碎机1 天前
SQL 深度精讲|IN 与 NOT IN 用法、底层原理、NULL 致命坑、性能优化(实战干货)
大数据·数据库·sql·spring·搜索引擎·性能优化
破碎的南瓜2 天前
sqli--sql注入过关笔记(1,2,3,4,5,9)
数据库·笔记·sql
Csvn2 天前
📊 SQL 入门 Day 10:递归 CTE — 破解无限层级查询的终极武器
后端·sql
Database_Cool_2 天前
企业级多模态分析计算引擎选型:首选 AnalyticDB MySQL 向量 + SQL + 实时一体化方案
数据库·sql·mysql
洵有兮2 天前
sql注入通关笔记
数据库·笔记·sql·sql注入
sbjdhjd2 天前
SQL 注入零基础详解:原理、手工注入流程与 Sqli-Labs 靶场实战1~5关和第9关思路
数据库·sql·计算机网络·web安全·网络安全·网络攻击模型·安全架构