首页/数据/SQL 速查/MOD 取模与分桶
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

MOD 取模与分桶

取余数:分表路由、采样、奇偶判断常用;对负数取模的符号规则与除零行为两库不同,分桶公式要写防御性版本。

SQL 速查数据更新于 2026-10-12

示例

示例
SELECT MOD(7, 3), 7 % 3;     -- 1, 1
SELECT MOD(-7, 3);           -- -1(符号跟随被除数)
-- 分桶路由
SELECT MOD(ABS(CRC32(user_id)), 16) AS bucket;
除零MySQL 返回 NULL;PostgreSQL 抛 division by zero 错误
负数结果符号跟随被除数,分桶前先 ABS 或修正
等价MOD(a,b) 与 a % b 等价(两库)

易错点

  • MOD(-7,3) 得 -1 而非 2:直接当数组下标或分桶号会越界,先 ((x % n) + n) % n 归一化
  • PostgreSQL 中除数为 0 直接报错中断查询,分桶前用 NULLIF(b,0) 或 CASE 挡掉零值

数据来源与参考

  • MySQL 8.0 Reference Manual · MOD
  • PostgreSQL Documentation · Mathematical Functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌