module Sequel::SQL::NumericMethods

  1. lib/sequel/sql.rb

This module includes the standard mathematical methods (+, -, *, and /) that are defined on objects that can be used in a numeric context in SQL (Symbol, LiteralString, and SQL::GenericExpression).

Sequel[:a] + :b # "a" + "b"
Sequel[:a] - :b # "a" - "b"
Sequel[:a] * :b # "a" * "b"
Sequel[:a] / :b # "a" / "b"

One exception to this is if + is called with a String or StringExpression, in which case the || operator is used instead of the + operator:

Sequel[:a] + 'b' # "a" || 'b'

Methods

Public Instance

  1. +
  2. coerce

Public Instance methods

+(ce)

Use || as the operator when called with StringExpression and String instances, and the + operator for LiteralStrings and all other types.

[show source]
    # File lib/sequel/sql.rb
803 def +(ce)
804   case ce
805   when LiteralString
806     NumericExpression.new(:+, self, ce)
807   when StringExpression, String
808     StringExpression.new(:'||', self, ce)
809   else
810     NumericExpression.new(:+, self, ce)
811   end
812 end
coerce(other)

If the argument given is Numeric, treat it as a NumericExpression, allowing code such as:

1 + Sequel[:x] # SQL: (1 + x)
Sequel.expr{1 - x(y)} # SQL: (1 - x(y))
[show source]
    # File lib/sequel/sql.rb
791 def coerce(other)
792   if other.is_a?(Numeric)
793     [SQL::NumericExpression.new(:NOOP, other), self]
794   elsif defined?(super)
795     super 
796   else
797     [self, other]
798   end
799 end