我正在为我正在工作的一个node.js项目使用sequelize ORM。我有一个查询,我需要对多个列的连接结果执行like操作。
例如,如下所示:
SELECT * FROM People WHERE (CONCAT(firstname,‘',lastname)) LIKE '%John Do%’。
我正在使用以下语法,我想知道是否可以在不使用原始查询的情况下实现这一点(在我的解决方案中没有其他方法)。
var criteria = {
include: [
occupation
],
where: {
is_active: 1
},
nest: false
};
db.people.findAll(criteria, {}).then(function(people) {
success(people);
}).catch(function(err) {
error(err);
});
有什么想法吗?
发布于 2020-06-18 08:22:46
我能够通过基于@yjimk答案的新的sequelize version 5.21.13实现这一点。
Users.findAll({
where: {
[sequelize.Op.or]:{
namesQuery: sequelize.where(
sequelize.fn(
"concat",
sequelize.col("firstName"),
" ",
sequelize.col("lastName")
),
{
[sequelize.Op.like]: `%${req.body.query}%`,
}
),
email: {[sequelize.Op.like]: `%${req.body.query}%`},
companyName: {[sequelize.Op.like]: `%${req.body.query}%`},
}
})
发布于 2021-06-29 23:05:09
db.models.users.findOne({
where: {
[db.sequelize.Op.and]: [
db.sequelize.where(
db.sequelize.fn('CONCAT', db.sequelize.col('first_name'), ' ', db.sequelize.col('last_name')),
{ like: `%${name}%` },
),
{ status: 'ACTIVE' },
]
}
});
https://stackoverflow.com/questions/32752840
复制相似问题