首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Sequelize: WHERE LIKE子句中的连接字段

Sequelize: WHERE LIKE子句中的连接字段
EN

Stack Overflow用户
提问于 2015-09-24 11:29:09
回答 2查看 19.9K关注 0票数 13

我正在为我正在工作的一个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);
    });

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 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}%`},
  }
})
票数 0
EN

Stack Overflow用户

发布于 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' },
                ]
            }
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32752840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档