Ruby on rails Rails 3查询帮助
如何在查询中使用LIKE?我之所以要这样做,是因为我有一个查询,它会检查表单类型和状态是否正确,但我希望它不区分大小写。这是我的Ruby on rails Rails 3查询帮助,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,如何在查询中使用LIKE?我之所以要这样做,是因为我有一个查询,它会检查表单类型和状态是否正确,但我希望它不区分大小写。这是我的 @fields = Field.where(:form_type => 1, :state => "Alaska") 另外,我如何使其在表单类型=1或表单类型=*仍返回结果的情况下运行?您必须使用以下格式: @fields = Field.where(:form_type => 1).where("state LIKE 'Alaska'") 如果
@fields = Field.where(:form_type => 1, :state => "Alaska")
另外,我如何使其在
表单类型=1或表单类型=*
仍返回结果的情况下运行?您必须使用以下格式:
@fields = Field.where(:form_type => 1).where("state LIKE 'Alaska'")
如果希望它不区分大小写,并且
@fields = Field.where(:form_type => [1,3]).where("LOWER(state) = 'alaska'")
@fields = Field.where{(form_type.in [1,2,3]) & (state =~ 'Alaska'")}
或者,如果你喜欢大喊大叫(谁不喜欢偶尔大喊大叫呢?)
单个的
。
调用与AND结合在一起,获得一致的大小写行为的最可靠方法是自己动手。如果您不喜欢在代码中编写原始SQL,但希望在查询中使用like
子句,那么squel
gem非常好
我将gem与MySQL和PostreSQL一起使用,它生成正确的SQL(比如MySQL和ILIKE)。您使用squel查询的结果如下所示:
@fields = Field.where(:form_type => [1,3]).where("LOWER(state) = 'alaska'")
@fields = Field.where{(form_type.in [1,2,3]) & (state =~ 'Alaska'")}
我可以这样做吗@fields=Field.where(“form\u type=?或form\u type=?,1,*)。where(“类似于‘阿拉斯加’的州”)您是使用星号表示“任何表单类型”,还是*是它的实际有效值?不能保证LIKE不区分大小写。MySQL的LIKE通常不区分大小写,但PostgreSQL的LIKE不会(PostgreSQL为不区分大小写的匹配提供了一个ILIKE运算符)。这不是问题。但是你能帮我解决我遇到的OR问题吗?我如何才能查询“获取等于1或*的表单类型,其中州是阿拉斯加?你只需要说
。WHERE(:form\u type=>[1,*”)。WHERE(“类似于‘阿拉斯加’的州”)
是的,阿拉斯加部分不支持区分大小写。有什么建议吗?谢谢。您知道我如何查询表单类型是否等于1或3吗?