向查询附加附加条件

Append additional conditions to a query

我有一个查询,我需要添加几个条件作为 OR 子句,因为我想使用 LIKE,所以我不能使用 IN

那么如何从数组中添加多个 OR

SQL 应该是这样的:

SELECT * FROM TABLE where a like '%a%' OR a LIKE '%b%' OR a LIKE '%c%' ...

其中 'a'、'b'、'c' 来自数组。

dataset
   .where(column:, Sequel.like(:column, '%#{myarray.first}%'))

myarray.drop(1).each do |v|
    dataset.or(Sequel.like(:column, '%#{v}%'))
end

dataset.limit(100)

Rails API docs 开始,.or 条件查询应链接 一个 .where 方法之后。

dataset.where(column:, Sequel.like(:column, '%#{myarray.first}%'))
       .or(dataset.where(column:, Sequel.like(:column, '%#{myarray.second}%'))
       .or(dataset.where(column:, Sequel.like(:column, '%#{myarray.third}%'))

完整答案:

dataset = dataset.where(column:, Sequel.like(:column, '%#{myarray.first}%'))

myarray.drop(1).each do |v|
    dataset = dataset.or(dataset.where(column:, Sequel.like(:column, '%#{v}%'))
end

dataset.limit(100)

在“原版”Rails.

中没有 gem(假设 Sequel.like 来自此 gem)也可以实现相同的效果
dataset = dataset.where("column LIKE ?", '%#{myarray.first}%'))

myarray.drop(1).each do |v|
    dataset = dataset.or(dataset.where("column LIKE ?", '%#{v}%'))
end

dataset.limit(100)