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'
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