向查询附加附加条件
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)
我有一个查询,我需要添加几个条件作为 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)