Module | Sequel::SQL::ComplexExpressionMethods |
In: |
lib/sequel/sql.rb
|
Adds methods that allow you to treat an object as an instance of a specific ComplexExpression subclass. This is useful if another library overrides the methods defined by Sequel.
For example, if Symbol#/ is overridden to produce a string (for example, to make file system path creation easier), the following code will not do what you want:
:price/10 > 100
In that case, you need to do the following:
:price.sql_number/10 > 100
Extract a datetime_part (e.g. year, month) from self:
:date.extract(:year) # extract(year FROM "date")
Also has the benefit of returning the result as a NumericExpression instead of a generic ComplexExpression.
The extract function is in the SQL standard, but it doesn‘t doesn‘t use the standard function calling convention, and it doesn‘t work on all databases.
# File lib/sequel/sql.rb, line 341 341: def extract(datetime_part) 342: NumericExpression.new(:extract, datetime_part, self) 343: end
Return a BooleanExpression representation of self.
# File lib/sequel/sql.rb, line 346 346: def sql_boolean 347: BooleanExpression.new(:NOOP, self) 348: end
Return a NumericExpression representation of self.
~:a # NOT "a" ~:a.sql_number # ~"a"
# File lib/sequel/sql.rb, line 354 354: def sql_number 355: NumericExpression.new(:NOOP, self) 356: end
Return a StringExpression representation of self.
:a + :b # "a" + "b" :a.sql_string + :b # "a" || "b"
# File lib/sequel/sql.rb, line 362 362: def sql_string 363: StringExpression.new(:NOOP, self) 364: end