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

&(ce)

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

case(*args)

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

sql_expr()

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

sql_negate()

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

sql_or()

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

|(ce)

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]