ruby - Ruby Sequel 和模式数组
问题描述
我有一组用于 ILIKE 的模式,一个带有其他过滤器的现有数据集,我想将它添加到其中。
patterns = ['abc%', 'bcd', '%cde', ...]
我使用 Postgres,所以在 SQL 中我会做类似的事情AND field ILIKE ANY('abc%', ...)
,但是如何实现(或类似的事情,比如 dynamic 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
那么任何一个都应该毫无问题地执行。
推荐阅读
- html - 如何使用脚本中的帖子?
- android - 禁用设置按钮后,Android我的应用程序崩溃
- html - 如何将 const 传递给多个组件/拆分 React-Redux-Router 文件
- c# - Unity - 从编辑器通过引用传递脚本,在运行时在对象上实例化它
- node.js - 使用自定义标题 WSO2
- javascript - 嵌套列表权重总和算法问题
- python - 使用 PrintfTickFormatter 将 Bokeh x 轴从小数格式化为百分比
- c++ - C++:一个对象可以同时存储和不存储吗?
- r - dcast 将长数据更改为宽数据 + 替换值
- php - 如何使用 Array php 返回 JSON 对象