簡體   English   中英

Sequelize - 不區分大小寫,如

[英]Sequelize - case-insensitive like

如何在 Sequelize 中實現這一目標?

SELECT * FROM table where lower(column) LIKE ('abcd%');

我找不到將功能與$like混合的方法

你應該使用 Sequelize.Op :

Table.findAll({
    where: {
        name: {
            [Sequelize.Op.iLike]: searchQuery
        }
    }
})

如果要進行部分查詢,請不要忘記在 searchQuery 之前或之后添加 %。

請參閱此處的文檔

我找到了解決方案:

Table.findAll({
  attributes: ['createdAt', 'col'],
  where: {
    $and:[
      {
        createdAt:{
          $between:[minDate, maxDate]
        }
      },
      Sequelize.where(
        Sequelize.fn('lower', Sequelize.col('col')),
        {
          $like: 'abcd%'
        }
      )
    ]
  }
});

如果您使用的是 PostGres,則可以使用 $iLike 運算符來搜索行(不是您的問題所要求的列名)。

續集文檔

雖然它沒有完全解決您的問題,但希望它能幫助那些搜索不區分大小寫 + Sequelize 的人,這讓我來到這里。

Table.findAll({
    where: {
        createdAt: {
            $between: [minDate, maxDate]
        },
        someOtherColumn: {
            $like: '%mysearchterm%'
        }
    }
})

我遇到了類似的問題並解決了

const values = ['adcd'].map(x => x.toLowerCase());

const results = await SomeModel.findAll({
   attributes: [
      ...Object.keys(SomeModel.rawAttributes),
      [Sequelize.fn('LOWER', Sequelize.col('someColumn')), 'lower'],
   ],
   having: { lower: values, },
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM