Sequelize - 不区分大小写

时间:2017-01-18 19:38:43

标签: mysql node.js sequelize.js

如何在Sequelize中实现这一目标?

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

我找不到将 lower 功能与 $

混合的方法

4 个答案:

答案 0 :(得分:10)

我找到了解决方案:

received = parseFloat($('input[name=amount_received]').val().toFixed(2));
total_amount= parseFloat($('input[name=total_bill]').val().toFixed(2));

答案 1 :(得分:5)

如果你正在使用PostGres,你可以使用$ iLike运算符来搜索行(不是像你的问题所要求的列名)。

Sequelize Docs

虽然它没有完全解决你的问题,但希望它可以帮助那些搜索不区分大小写+ Sequelize的人,这会让我来到这里。

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

答案 2 :(得分:0)

您应该使用Sequelize.Op:

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

如果要进行部分查询,请不要忘记在搜索查询之前或之后添加%。

See the docs here

答案 3 :(得分:0)

我遇到了类似的问题并得到解决

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, },
});