module Sequel::SQL::NumericMethods
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
).
:a + :b # "a" + "b" :a - :b # "a" - "b" :a * :b # "a" * "b" :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:
:a + 'b' # "a" || 'b'
Public Instance Methods
+(ce)
click to toggle source
Use || as the operator when called with StringExpression and String instances, and the + operator for LiteralStrings and all other types.
# File lib/sequel/sql.rb, line 824 def +(ce) case ce when LiteralString NumericExpression.new(:+, self, ce) when StringExpression, String StringExpression.new(:'||', self, ce) else NumericExpression.new(:+, self, ce) end end
coerce(other)
click to toggle source
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))
Calls superclass method
# File lib/sequel/sql.rb, line 814 def coerce(other) if other.is_a?(Numeric) [SQL::NumericExpression.new(:NOOP, other), self] else super end end