Class Hash
In: lib/sequel/core_sql.rb
Parent: Object

Sequel extends Hash to add methods to implement the SQL DSL.

Methods

&   case   sql_expr   sql_negate   sql_or   |   ~  

Public Instance methods

Return a Sequel::SQL::BooleanExpression created from this hash, matching all of the conditions in this hash and the condition specified by the given argument.

  {:a=>1} & :b # SQL: a = 1 AND b
  {:a=>true} & ~:b # SQL: a IS TRUE AND NOT b

[Source]

     # File lib/sequel/core_sql.rb, line 120
120:   def &(ce)
121:     ::Sequel::SQL::BooleanExpression.new(:AND, self, ce)
122:   end

Return a Sequel::SQL::CaseExpression with this hash as the conditions and the given default value. Note that the order of the conditions will be arbitrary on ruby 1.8, so all conditions should be orthogonal.

  {{:a=>[2,3]}=>1}.case(0) # SQL: CASE WHEN a IN (2, 3) THEN 1 ELSE 0 END
  {:a=>1, :b=>2}.case(:d, :c) # SQL: CASE c WHEN a THEN 1 WHEN b THEN 2 ELSE d END
                                #  or: CASE c WHEN b THEN 2 WHEN a THEN 1 ELSE d END

[Source]

     # File lib/sequel/core_sql.rb, line 150
150:   def case(*args)
151:     ::Sequel::SQL::CaseExpression.new(to_a, *args)
152:   end

Return a Sequel::SQL::BooleanExpression created from this hash, matching all of the conditions. Rarely do you need to call this explicitly, as Sequel generally assumes that hashes specify this type of condition.

  {:a=>true}.sql_expr # SQL: a IS TRUE
  {:a=>1, :b=>[2, 3]}.sql_expr # SQL: a = 1 AND b IN (2, 3)

[Source]

     # File lib/sequel/core_sql.rb, line 160
160:   def sql_expr
161:     ::Sequel::SQL::BooleanExpression.from_value_pairs(self)
162:   end

Return a Sequel::SQL::BooleanExpression created from this hash, matching none of the conditions.

  {:a=>true}.sql_negate # SQL: a IS NOT TRUE
  {:a=>1, :b=>[2, 3]}.sql_negate # SQL: a != 1 AND b NOT IN (2, 3)

[Source]

     # File lib/sequel/core_sql.rb, line 169
169:   def sql_negate
170:     ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :AND, true)
171:   end

Return a Sequel::SQL::BooleanExpression created from this hash, matching any of the conditions.

  {:a=>true}.sql_or # SQL: a IS TRUE
  {:a=>1, :b=>[2, 3]}.sql_or # SQL: a = 1 OR b IN (2, 3)

[Source]

     # File lib/sequel/core_sql.rb, line 178
178:   def sql_or
179:     ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR)
180:   end

Return a Sequel::SQL::BooleanExpression created from this hash, matching all of the conditions in this hash or the condition specified by the given argument.

  {:a=>1} | :b # SQL: a = 1 OR b
  {:a=>true} | ~:b # SQL: a IS TRUE OR NOT b

[Source]

     # File lib/sequel/core_sql.rb, line 130
130:   def |(ce)
131:     ::Sequel::SQL::BooleanExpression.new(:OR, self, ce)
132:   end

Return a Sequel::SQL::BooleanExpression created from this hash, not matching all of the conditions.

  ~{:a=>true} # SQL: a IS NOT TRUE
  ~{:a=>1, :b=>[2, 3]} # SQL: a != 1 OR b NOT IN (2, 3)

[Source]

     # File lib/sequel/core_sql.rb, line 139
139:   def ~
140:     ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR, true)
141:   end

[Validate]