015 有趣的查询条件

简介:

Fun with Find Conditions

You can pass more than simple strings to find conditions. Arrays, ranges, and nil values can be passed as well. In this episode you will see the tricks involved with passing these odd objects to find conditions. (Update: audio fixed).
 
你可以传递复杂的查询条件。数组,区间和空值都可以作为查询条件。这节,你会看到利用这些东西作为查询条件的情况。
 
首先,来看看
#1
>>Task.count(:all, :conditions=>["complete=? and priority=? ", false, 3])
SQL:
SELECT count(*) AS count_all FROM tasks WHERE (complete=0 and priority=3)
=>2
#2
>>Task.count(:all, :conditions=>["complete=? and priority=? ", false, nil])
SQL:
SELECT count(*) AS count_all FROM tasks WHERE (complete=0 and priority=NULL)
=>0
 
在SQL中应该是IS NULL而不是=NULL
所以
>>Task.count(:all, :conditions=>["complete=? and priority IS ? ", false, nil])
 
在查询中也可以用到数组:
 
>>Task.count(:all, :conditions=>["complete=? and priority in ? ", false, [1,3]])
SQL:
SELECT count(*) AS count_all FROM tasks WHERE (complete=0 and priority IN (1,3))
=>3
 
也可以使用区间:
 
>>Task.count(:all, :conditions=>["complete=? and priority in ? ", false, 1...3])
SQL:
SELECT count(*) AS count_all FROM tasks WHERE (complete=0 and priority IN (0,1,2))
=>3
 
在rails1.2版本中,支持conditions适用hash:
 
>>Task.count(:all, :conditions=>{:complete=>false, :priority=>1})
=>1
 
>>Task.count(:all, :conditions=>{:complete=>false, :priority=>nil})
=>0
 
>>Task.count(:all, :conditions=>{:complete=>false, :priority=>[1,3]})
=>3
 
 
>>Task.count(:all, :conditions=>{:complete=>false, :priority=>1...3})
=>3
 




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/131625,如需转载请自行联系原作者
目录
相关文章
|
8月前
|
缓存 索引
7.过滤查询
7.过滤查询
|
8月前
有关筛选条件的问题
有关筛选条件的问题
45 0
|
Shell
一.条件选择:if语句
一.条件选择:if语句
147 0
|
SQL 关系型数据库 MySQL
避免在where子句中使用 or 来连接条件
避免在where子句中使用 or 来连接条件
|
关系型数据库 MySQL
ES复杂操作-布尔值查询(多条件精确查询)
ES复杂操作-布尔值查询(多条件精确查询)
|
SQL 关系型数据库 MySQL
三、避免在where子句中使用 or 来连接条件
三、避免在where子句中使用 or 来连接条件
159 0
SQL.查询-多条件-动态条件查询
SQL.查询-多条件-动态条件查询
121 0
SQL.查询-多条件-动态条件查询
SQL.查询-单条件-动态条件查询
SQL.查询-单条件-动态条件查询
151 0
SQL.查询-单条件-动态条件查询