[英]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.