diff --git a/app/models/query.rb b/app/models/query.rb
index 5ad0dd80407f216407a6783de9927f03c09d701c..8b036eb5774a6f5449e616a0f784d41f85c002cf 100644
--- a/app/models/query.rb
+++ b/app/models/query.rb
@@ -309,51 +309,8 @@ class Query < ActiveRecord::Base
         v.push(User.current.logged? ? User.current.id.to_s : "0") if v.delete("me")
       end
       
-      case operator_for field
-      when "="
-        sql = sql + "#{db_table}.#{db_field} IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")"
-      when "!"
-        sql = sql + "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))"
-      when "!*"
-        sql = sql + "#{db_table}.#{db_field} IS NULL"
-        sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter
-      when "*"
-        sql = sql + "#{db_table}.#{db_field} IS NOT NULL"
-        sql << " AND #{db_table}.#{db_field} <> ''" if is_custom_filter
-      when ">="
-        sql = sql + "#{db_table}.#{db_field} >= #{v.first.to_i}"
-      when "<="
-        sql = sql + "#{db_table}.#{db_field} <= #{v.first.to_i}"
-      when "o"
-        sql = sql + "#{IssueStatus.table_name}.is_closed=#{connection.quoted_false}" if field == "status_id"
-      when "c"
-        sql = sql + "#{IssueStatus.table_name}.is_closed=#{connection.quoted_true}" if field == "status_id"
-      when ">t-"
-        sql = sql + date_range_clause(db_table, db_field, - v.first.to_i, 0)
-      when "<t-"
-        sql = sql + date_range_clause(db_table, db_field, nil, - v.first.to_i)
-      when "t-"
-        sql = sql + date_range_clause(db_table, db_field, - v.first.to_i, - v.first.to_i)
-      when ">t+"
-        sql = sql + date_range_clause(db_table, db_field, v.first.to_i, nil)
-      when "<t+"
-        sql = sql + date_range_clause(db_table, db_field, 0, v.first.to_i)
-      when "t+"
-        sql = sql + date_range_clause(db_table, db_field, v.first.to_i, v.first.to_i)
-      when "t"
-        sql = sql + date_range_clause(db_table, db_field, 0, 0)
-      when "w"
-        from = l(:general_first_day_of_week) == '7' ?
-          # week starts on sunday
-          ((Date.today.cwday == 7) ? Time.now.at_beginning_of_day : Time.now.at_beginning_of_week - 1.day) :
-          # week starts on monday (Rails default)
-          Time.now.at_beginning_of_week
-        sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(from), connection.quoted_date(from + 7.days)]
-      when "~"
-        sql = sql + "#{db_table}.#{db_field} LIKE '%#{connection.quote_string(v.first)}%'"
-      when "!~"
-        sql = sql + "#{db_table}.#{db_field} NOT LIKE '%#{connection.quote_string(v.first)}%'"
-      end
+      sql = sql + sql_for_field(field, v, db_table, db_field, is_custom_filter)
+      
       sql << ')'
       filters_clauses << sql
     end if filters and valid?
@@ -363,6 +320,58 @@ class Query < ActiveRecord::Base
   
   private
   
+  # Helper method to generate the WHERE sql for a +field+ with a value (+v+)
+  def sql_for_field(field, v, db_table, db_field, is_custom_filter)
+    sql = ''
+    case operator_for field
+    when "="
+      return "#{db_table}.#{db_field} IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")"
+    when "!"
+      return "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))"
+    when "!*"
+      sql = "#{db_table}.#{db_field} IS NULL"
+      sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter
+      return sql
+    when "*"
+      sql = "#{db_table}.#{db_field} IS NOT NULL"
+      sql << " AND #{db_table}.#{db_field} <> ''" if is_custom_filter
+      return sql
+    when ">="
+      return "#{db_table}.#{db_field} >= #{v.first.to_i}"
+    when "<="
+      return "#{db_table}.#{db_field} <= #{v.first.to_i}"
+    when "o"
+      return "#{IssueStatus.table_name}.is_closed=#{connection.quoted_false}" if field == "status_id"
+    when "c"
+      return "#{IssueStatus.table_name}.is_closed=#{connection.quoted_true}" if field == "status_id"
+    when ">t-"
+      return date_range_clause(db_table, db_field, - v.first.to_i, 0)
+    when "<t-"
+      return date_range_clause(db_table, db_field, nil, - v.first.to_i)
+    when "t-"
+      return date_range_clause(db_table, db_field, - v.first.to_i, - v.first.to_i)
+    when ">t+"
+      return date_range_clause(db_table, db_field, v.first.to_i, nil)
+    when "<t+"
+      return date_range_clause(db_table, db_field, 0, v.first.to_i)
+    when "t+"
+      return date_range_clause(db_table, db_field, v.first.to_i, v.first.to_i)
+    when "t"
+      return date_range_clause(db_table, db_field, 0, 0)
+    when "w"
+      from = l(:general_first_day_of_week) == '7' ?
+      # week starts on sunday
+      ((Date.today.cwday == 7) ? Time.now.at_beginning_of_day : Time.now.at_beginning_of_week - 1.day) :
+        # week starts on monday (Rails default)
+        Time.now.at_beginning_of_week
+      return "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(from), connection.quoted_date(from + 7.days)]
+    when "~"
+      return "#{db_table}.#{db_field} LIKE '%#{connection.quote_string(v.first)}%'"
+    when "!~"
+      return "#{db_table}.#{db_field} NOT LIKE '%#{connection.quote_string(v.first)}%'"
+    end
+  end
+  
   def add_custom_fields_filters(custom_fields)
     @available_filters ||= {}