Class Sequel::SQL::CaseExpression
In: lib/sequel/extensions/eval_inspect.rb
lib/sequel/sql.rb
Parent: Object

Represents an SQL CASE expression, used for conditional branching in SQL.

Methods

Attributes

conditions  [R]  An array of all two pairs with the first element specifying the condition and the second element specifying the result if the condition matches.
default  [R]  The default value if no conditions match.
expression  [R]  An optional expression to test the conditions against

Public Class methods

Create an object with the given conditions and default value, and optional expression. An expression can be provided to test each condition against, instead of having all conditions represent their own boolean expression.

[Source]

      # File lib/sequel/sql.rb, line 1142
1142:       def initialize(conditions, default, expression=(no_expression=true; nil))
1143:         raise(Sequel::Error, 'CaseExpression conditions must be a hash or array of all two pairs') unless Sequel.condition_specifier?(conditions)
1144:         @conditions = conditions.to_a.dup.freeze
1145:         @default = default
1146:         @expression = expression
1147:         @no_expression = no_expression
1148:         freeze
1149:       end

Public Instance methods

Whether to use an expression for this CASE expression.

[Source]

      # File lib/sequel/sql.rb, line 1152
1152:       def expression?
1153:         !@no_expression
1154:       end

Merge the CASE expression into the conditions, useful for databases that don‘t support CASE expressions.

[Source]

      # File lib/sequel/sql.rb, line 1158
1158:       def with_merged_expression
1159:         if expression?
1160:           e = expression
1161:           CaseExpression.new(conditions.map{|c, r| [::Sequel::SQL::BooleanExpression.new('=''=', e, c), r]}, default)
1162:         else
1163:           self
1164:         end
1165:       end

[Validate]