Ruby Sequel 和模式数组
Ruby Sequel and array of patterns
我有一组用于 ILIKE 的模式,这是一个带有其他过滤器的现有数据集,我想将其添加到其中。
patterns = ['abc%', 'bcd', '%cde', ...]
我使用 Postgres,所以在 SQL 中我会做类似 AND field ILIKE ANY('abc%', ...)
的事情,但是如何实现它(或类似的事情,比如动态 AND (field ILIKE 'abc' OR field ILIKE 'bcd')
?理想的情况是什么Sequel?
的解决方案
谢谢!
以下任何一个都应该有效
where(ary.map {|val| Sequel.ilike(:column_name, val)}.reduce(&:|))
#or
where(Sequel.lit("table_name.column_name ILIKE ANY(#{ary.map(&:inspect).join(',')})"))
我个人更喜欢前者,但如果您控制 ary
的内容,那么两者都应该毫无问题地执行。
我有一组用于 ILIKE 的模式,这是一个带有其他过滤器的现有数据集,我想将其添加到其中。
patterns = ['abc%', 'bcd', '%cde', ...]
我使用 Postgres,所以在 SQL 中我会做类似 AND field ILIKE ANY('abc%', ...)
的事情,但是如何实现它(或类似的事情,比如动态 AND (field ILIKE 'abc' OR field ILIKE 'bcd')
?理想的情况是什么Sequel?
谢谢!
以下任何一个都应该有效
where(ary.map {|val| Sequel.ilike(:column_name, val)}.reduce(&:|))
#or
where(Sequel.lit("table_name.column_name ILIKE ANY(#{ary.map(&:inspect).join(',')})"))
我个人更喜欢前者,但如果您控制 ary
的内容,那么两者都应该毫无问题地执行。