2
我知道下面的查询会查找具有以某个前缀开头的字段值的记录。ActiveRecord查找以数组中的单词开头的记录
MyModel.where("field LIKE ?", "#{prefix}%")
什么是查询来查找具有从数组中的单词之一开始的字段值的记录?
编辑:我在这里找到了其他语言的解决方案:SQL LIKE % inside array和顺便说一句,我使用MySQL DB。
我知道下面的查询会查找具有以某个前缀开头的字段值的记录。ActiveRecord查找以数组中的单词开头的记录
MyModel.where("field LIKE ?", "#{prefix}%")
什么是查询来查找具有从数组中的单词之一开始的字段值的记录?
编辑:我在这里找到了其他语言的解决方案:SQL LIKE % inside array和顺便说一句,我使用MySQL DB。
这应做到:
prefixes = ['mega', 'hyper', 'super']
sql_conditions = prefixes.map{ |prefix| "field ILIKE #{sanitize("#{prefix}%")}" }.join(' OR ')
MyModel.where(sql_conditions)
在我的IRB控制台:
prefixes = ['mega', 'hyper', 'super']
sql_conditions = prefixes.map{ |prefix| "field ILIKE #{ActiveRecord::Base.sanitize("#{prefix}%")}" }.join(' OR ')
# => "field ILIKE 'mega%' OR field ILIKE 'hyper%' OR field ILIKE 'super%'"
的替代,因为只有MySQL的:
prefixes = ['^mega', '^hyper', '^super'] # the^wildcard represents the start of line
sql_conditions = "field RLIKE '#{prefixes.join('|')}'" # RLIKE is also known as REGEXP
MyModel.where(sql_conditions)
谢谢!所有的好方法! – konyak