Function / Example
ToSql
MySQL / MariaDB PostgreSQL SQLite Oracle MS SQL DB2
(not tested on real DB)
Number functions
ABS
column.abs
CEIL
column.ceil
CASE + CAST CEILING() CEILING()
FLOOR
column.floor
CASE + CAST
RAND
Arel.rand
RANDOM() dbms_random.value()
ROUND
column.round(precision = 0)
SUM / AVG / MIN / MAX + x
column.sum + 42
String functions
CONCAT
column + "string"
|| +
LENGTH
column.length
LEN()
LOCATE
column.locate("string")
INSTR() CHARINDEX()
FIND_IN_SET
column & ("l")
db.create_function( "find_in_set", 1 )
do |func, value1, value2|,
func.result =value1.index(value2)
end
SOUNDEX
column.soundex
require fuzzystrmatch
REPLACE
column.replace("s","X")
REGEXP
column =~ "pattern"
require pcre.so REGEXP_LIKE LIKE
NOT_REGEXP
column != "pattern"

require pcre.so NOT REGEXP_LIKE NOT LIKE
ILIKE (in Arel6)
column.imatches('%pattern')
LOWER() LIKE LOWER() LOWER() LIKE LOWER() LOWER() LIKE LOWER() LOWER() LIKE LOWER()
TRIM (leading)
column.trim("LEADING","M")
LTRIM() LTRIM() LTRIM()
TRIM (trailing)
column.trim("TRAILING","g")
RTRIM() RTRIM() Rtrim()
TRIM (both)
column.trim("BOTH","e")
TRIM() TRIM() LTRIM(RTRIM()) TRIM()
LOWER
column.downcase
UPPER
column.upcase
Date functions
DATEADD
column + 2.year
DATE_ADD()
+
DATEDIFF
column - date
DATEDIFF()
JULIANDAY() - JULIANDAY() - DAY()
DAY
column.day
STRFTIME()
MONTH
column.month
STRFTIME()
WEEK
column.week
STRFTIME()
YEAR
column.year
STRFTIME()
Comparators functions
COALESCE
column.coalesce(var)
ISNULL
column.isnull()
IFNULL() NVC()
==
column == integer
!=
column != integer
>
column > integer
>=
column >= integer
<
column < integer
<=
column <= integer
Boolean
functions
OR ( ⋁ )
column.eq(var).⋁(column.eq(var))
AND ( ⋀ )
column.eq(var).⋀(column.eq(var))
Bulk
Insert
insert_manager.bulk_insert(@cols, @data)
Set
Operators
UNION ( + )
query + query
to be tested to be tested to be tested to be tested to be tested to be tested