如何在Sequelize中实现类似MySQL的MOD取余筛选功能?
在Sequelize中实现MySQL的MOD偶数查询功能
你在MySQL中用以下语句筛选attr字段为偶数的数据行:
SELECT * FROM some_table WHERE MOD(attr, 2) = 0;
想要在Sequelize中实现相同逻辑,其实可以通过两种方式完成:
方式一:使用Op.mod操作符
这完全符合你期望的写法,但要记得先导入Sequelize的Op对象:
const { Op } = require('sequelize'); // 若是ES模块则用:import { Op } from 'sequelize';
然后直接按你设想的写法调用:
MyModel.findAll({ where: { attr: { [Op.mod]: [2, 0] } } })
方式二:直接调用数据库MOD函数
如果需要更直观对应原生SQL逻辑,也可以用sequelize.fn和sequelize.where组合实现:
MyModel.findAll({ where: sequelize.where(sequelize.fn('MOD', sequelize.col('attr'), 2), 0) })
两种方式最终都会生成你需要的原生SQL语句,第一种写法更简洁,第二种则更贴近原生函数调用逻辑,可根据需求选择。
内容的提问来源于stack exchange,提问作者mateusmpbr
相关产品推荐
相关产品推荐

