Skip to content

Functions available in SQL statements

Mathematical functions

function namePurposeparameterReturned value
absAbsolute valueOperandabsolute value
cosCosineOperandCosine value
coshHyperbolic cosineOperandHyperbolic cosine value
acosInverse cosineOperandInverse cosine value
acoshInverse hyperbolic cosineOperandInverse hyperbolic cosine value
sinSineOperandSine value
sinhHyperbolic sineOperandHyperbolic sine value
asinArcsineOperandArcsine value
asinhinverse hyperbolic sineOperandinverse hyperbolic sine value
tantangentOperandtangent value
tanhHyperbolic tangentOperandHyperbolic tangent value
atanArc tangentOperandArc tangent value
atanhInverse hyperbolic tangentOperandInverse hyperbolic tangent value
ceilRound upOperandInteger value
floorRound downOperandInteger value
roundroundingOperandInteger value
expExponentiationOperandX power of e
powerExponential operation1. Left operand x
2. Right operand y
Y power of X
sqrtSquare root operationOperandSquare root
fmodFloating point modulus function1. left Operand
2.right Operand
module
logLogarithm to eOperandvalue
log10Logarithm to 10Operandvalue
log2Logarithm to 2Operandvalue
erlang
abs(-12) = 12
cos(1.5) = 0.0707372016677029
cosh(1.5) = 2.352409615243247
acos(0.0707372016677029) = 1.5
acosh(2.352409615243247) = 1.5
sin(0.5) = 0.479425538604203
sinh(0.5) = 0.5210953054937474
asin(0.479425538604203) = 0.5
asinh(0.5210953054937474) = 0.5
tan(1.4) = 5.797883715482887
tanh(1.4) = 0.8853516482022625
atan(5.797883715482887) = 1.4
atanh(0.8853516482022625) = 1.4000000000000001
ceil(1.34) = 2
floor(1.34) = 1
round(1.34) = 1
round(1.54) = 2
exp(10) = 22026.465794806718
power(2, 10) = 1024
sqrt(2) = 1.4142135623730951
fmod(-32, 5) = -2
log10(1000) = 3
log2(1024) = 10

Data type judgment function

Function namePurposeparameterReturned value
is_nullChecks if a variable is null. Note: This function cannot determine the JSON null type; use is_null_var instead.DataReturns true if the variable is null (undefined); otherwise, returns false.
is_not_nullChecks if a variable is not null. Note: This function cannot determine the JSON null type; use is_null_var instead.DataReturns false if the variable is null (undefined); otherwise, returns true.
is_null_varChecks if a variable is null.DataReturns true if the variable is null (undefined); otherwise, returns false.
is_not_null_varChecks if a variable is not null.DataReturns false if the variable is null (undefined); otherwise, returns true.
is_strJudge whether the variable is String typeDataBoolean data.
is_boolJudge if the variable is Boolean typeDataBoolean data.
is_intJudge whether the variable is Integer typeDataBoolean data.
is_floatJudge whether the variable is Float typeDataBoolean data.
is_numJudge whether the variable is a numeric type, including Integer and Float typesDataBoolean data.
is_mapJudge whether the variable is Map typeDataBoolean data.
is_arrayJudge whether the variable is Array typeDataBoolean data.
erlang
is_null(undefined_var) = true
is_null(mget('a', json_decode('{"a": null}'))) = false
is_not_null(1) = true
is_not_null(mget('a', json_decode('{"a": null}'))) = true

is_null_var(undefined_var) = true
is_null_var(mget('a', json_decode('{"a": null}'))) = true
is_not_null_var(1) = true
is_not_null_var(mget('a', json_decode('{"a": null}'))) = false

is_str(1) = false
is_str('val') = true
is_bool(true) = true
is_int(1) = true
is_float(1) = false
is_float(1.234) = true
is_num(2.3) = true
is_num('val') = false

Data type conversion function

function namepurposeparameterreturned value
strConvert data to String typeDataData of type String. Failure to convert will cause SQL matching to fail
str_utf8Convert data to UTF-8 String typeDataUTF-8 String type data. Failure to convert will cause SQL matching to fail
boolConvert data to Boolean typeDataBoolean data. Failure to convert will cause SQL matching to fail
intConvert data to integer typeDataInteger type data. Failure to convert will cause SQL matching to fail
floatConvert data to floating typeDataFloating type data. Failure to convert will cause SQL matching to fail
float2strConvert a float to string using the given precision1. Float Number 2. PrecisionString
mapConvert data to Map typeDataMap type data. Failure to convert will cause SQL matching to fail
erlang
str(1234) = '1234'
str_utf8(1234) = '1234'
bool('true') = true
int('1234') = 1234
float('3.14') = 3.14
float2str(20.2, 10) = '20.2'
float2str(20.2, 17) = '20.19999999999999928'

String Functions

Function NameDescriptionParametersReturn Value
lowerConvert to lowercase1. Original stringLowercase string
upperConvert to uppercase1. Original stringUppercase string
trimRemove leading and trailing spaces1. Original stringString with spaces removed
ltrimRemove leading spaces1. Original stringString with leading spaces removed
rtrimRemove trailing spaces1. Original stringString with trailing spaces removed
reverseReverse the string1. Original stringReversed string
strlenGet the length of the string1. Original stringInteger value, character length
substrGet a substring of the string1. Original string
2. Starting position (Note: 0-based index)
Substring
substrGet a substring of the string1. Original string
2. Starting position
3. Length of the substring to extract (Note: 0-based index)
Substring
splitSplit the string1. Original string
2. Substring for splitting
Array of split strings
splitSplit the string, only find the first leading delimiter1. Original string
2. Substring for splitting
3. 'leading'
Array of split strings
splitSplit the string, only find the first trailing delimiter1. Original string
2. Substring for splitting
3. 'trailing'
Array of split strings
concatConcatenate strings1. Left string
2. Right string
Concatenated string
tokensTokenize the string (split by a specified substring)1. Input string
2. Delimiter string
Array of tokenized strings
tokensTokenize the string (split by a specified string and ignore line breaks)1. Input string
2. Delimiter string
3. 'nocrlf'
Array of tokenized strings
sprintfFormat a string (see Format section in Erlang's Format documentation for format string usage)1. Format string
2, 3, 4... Parameter list. Variable number of parameters
Formatted string
padPad a string with spaces, add from the end1. Original string
2. Total character length
Padded string
padPad a string with spaces, add from the end1. Original string
2. Total character length
3. 'trailing'
Padded string
padPad a string with spaces, add from both sides1. Original string
2. Total character length
3. 'both'
Padded string
padPad a string with spaces, add from the beginning1. Original string
2. Total character length
3. 'leading'
Padded string
padPad a string with a specified character, add from the end1. Original string
2. Total character length
3. 'trailing'
4. Character for padding
Padded string
padPad a string with a specified character, add from both sides1. Original string
2. Total character length
3. 'both'
4. Character for padding
Padded string
padPad a string with a specified character, add from the beginning1. Original string
2. Total character length
3. 'leading'
4. Character for padding
Padded string
replaceReplace a substring in the string, find and replace all matches1. Original string
2. Substring to be replaced
3. String for replacement
Replaced string
replaceReplace a substring in the string, find and replace all matches1. Original string
2. Substring to be replaced
3. String for replacement
4. 'all'
Replaced string
replaceReplace a substring in the string, find and replace the first trailing match1. Original string
2. Substring to be replaced
3. String for replacement
4. 'trailing'
Replaced string
replaceReplace a substring in the string, find and replace the first leading match1. Original string
2. Substring to be replaced
3. String for replacement
4. 'leading'
Replaced string
regex_matchCheck if a string matches a regular expression pattern1. Original string
2. Regular expression
true or false
regex_replaceReplace substrings in the string that match a regular expression pattern1. Original string
2. Regular expression
3. String for replacement
Replaced string
asciiGet the ASCII code of a character1. CharacterInteger value, ASCII code
findFind and return a substring in the string, search from the beginning1. Original string
2. Substring to find
Found substring, empty string if not found
findFind and return a substring in the string, search from the beginning1. Original string
2. Substring to find
3. 'leading'
Found substring, empty string if not found
findFind and return a substring in the string, search from the end1. Original string
2. Substring to find
3. 'trailing'
Found substring, empty string if not found
join_to_stringConcatenate array elements into a string1. ArrayConcatenated string, comma and space (, ) used as separator
join_to_stringConcatenate array elements into a string1. Separator string
2. Array
Concatenated string
join_to_sql_values_stringConcatenate array elements into a string, wrapping string elements with single quotes. Useful for building SQL VALUES clauses1. ArrayConcatenated string, comma and space (, ) used as separator
erlang
lower('AbC') = 'abc'
lower('abc') = 'abc'

upper('AbC') = 'ABC'` `lower('ABC') = 'ABC'

trim(' hello  ') = 'hello'

ltrim(' hello  ') = 'hello  '

rtrim(' hello  ') = ' hello'

reverse('hello') = 'olleh'

strlen('hello') = 5

substr('abcdef', 2) = 'cdef'
substr('abcdef', 2, 3) = 'cde'

split('a/b/ c', '/') = ['a', 'b', ' c']
split('a/b/ c', '/', 'leading') = ['a', 'b/ c']
split('a/b/ c', '/', 'trailing') = ['a/b', ' c']

concat('a', '/bc') = 'a/bc'
'a' + '/bc' = 'a/bc'

tokens(' a/b/ c', '/') = [' a', 'b', ' c']
tokens(' a/b/ c', '/ ') = ['a', 'b', 'c']
tokens(' a/b/ c\n', '/ ') = ['a', 'b', 'c\n']
tokens(' a/b/ c\n', '/ ', 'nocrlf') = ['a', 'b', 'c']
tokens(' a/b/ c\r\n', '/ ', 'nocrlf') = ['a', 'b', 'c']

sprintf('hello, ~s!', 'steve') = 'hello, steve!'
sprintf('count: ~p~n', 100) = 'count: 100\n'

pad('abc', 5) = 'abc  '
pad('abc', 5, 'trailing') = 'abc  '
pad('abc', 5, 'both') = ' abc '
pad('abc', 5, 'leading') = '  abc'
pad('abc', 5, 'trailing', '*') = 'abc**'
pad('abc', 5, 'trailing', '*#') = 'abc*#*#'
pad('abc', 5, 'both', '*') = '*abc*'
pad('abc', 5, 'both', '*#') = '*#abc*#'
pad('abc', 5, 'leading', '*') = '**abc'
pad('abc', 5, 'leading', '*#') = '*#*#abc'

replace('ababef', 'ab', 'cd') = 'cdcdef'
replace('ababef', 'ab', 'cd', 'all') = 'cdcdef'
replace('ababef', 'ab', 'cd', 'trailing') = 'abcdef'
replace('ababef', 'ab', 'cd', 'leading') = 'cdabef'

regex_match('abc123', '[a-zA-Z1-9]*') = true

regex_replace('ab1cd3ef', '[1-9]', '[&]') = 'ab[1]cd[3]ef'
regex_replace('ccefacef', 'c+', ':') = ':efa:ef'

ascii('a') = 97

find('eeabcabcee', 'abc') = 'abcabcee'
find('eeabcabcee', 'abc', 'leading') = 'abcabcee'
find('eeabcabcee', 'abc', 'trailing') = 'abcee'

join_to_string(['a', 'b', 'c']) = 'a, b, c'
join_to_string('-', ['a', 'b', 'c']) = 'a-b-c'
join_to_sql_values_string(['a', 'b', 1]) = '\'a\', \'b\', 1'

Map Function

Function NameFunction PurposeParametersReturn Value
map_newCreates an empty Map data typeNoneAn empty Map (Erlang Map type: #{}, equivalent to JSON objects {})
map_getRetrieves the value of a specific Key in the Map; returns empty if the Key doesn't exist1. Key
2. Map
The value of a specific Key in the Map. Supports nested Keys, e.g., "a.b.c"
map_getRetrieves the value of a specific Key in the Map; returns a specified default value if the Key doesn't exist1. Key
2. Map
3. Default Value
The value of a specific Key in the Map. Supports nested Keys, e.g., "a.b.c"
map_putInserts a value into the Map1. Key
2. Value
3. Map
The Map after the insertion. Supports nested Keys, e.g., "a.b.c"
mgetRetrieves the value of a specific Key in the Map; returns empty if the Key doesn't exist. Similar to map_get but does not support nested Keys1. Key
2. Map
The value of a specific Key in the Map
mgetRetrieves the value of a specific Key in the Map; returns a specified default value if the Key doesn't exist. Similar to map_get but does not support nested Keys1. Key
2. Map
3. Default Value
The value of a specific Key in the Map
mputInserts a value into the Map. Similar to map_put but does not support nested Keys1. Key
2. Value
3. Map
The Map after the insertion
map_keysRetrieves all keys of a Map data typeMapAn array containing all the keys
map_valuesRetrieves all values of a Map data typeMapAn array containing all the values
map_to_entriesConverts a Map into an array of Key-Value pairsMapAn array in the format [#{key => Key}, #{value => Value}], equivalent to JSON [{"key": Key}, {"value": Value}]
erlang
map_new() = #{}
json_encode(map_new()) = '{}'
map_get('a', json_decode( '{ "a" : 1 }' )) = 1
map_get('b', json_decode( '{ "a" : 1 }' ), 2) = 2
map_get('a.b', json_decode( '{ "a" : {"b": 2} }' )) = 2
map_put('c', 1, map_new()) = #{c => 1}
map_put('c.d', 1, map_new()) = #{c => #{d => 1}}
json_encode(map_put('c.d', 1, map_new())) = '{"c":{"d":1}}'
mget('a.b', json_decode( '{ "a.b" : 1 }' )) = 1
mget('a.b', json_decode( '{ "a" : {"b": 2} }' )) = undefined
mput('c.d', 1, map_new()) = #{<<"c.d">> => 1}
json_encode(mput('c.d', 1, map_new())) = '{"c.d":1}'
json_encode(map_to_entries('{"a": 1, "b": 2}')) = '[{"value":1,"key":"a"}, {"value":2,"key":"b"}]'
map_keys(json_decode('{ "a" : 1, "b" : 2 }')) = ['a', 'b']
map_values(json_decode('{ "a" : 1, "b" : 2 }')) = [1, 2]

Array function

function namepurposeparameterreturned value
nthTake the nth element, and subscripts start at 1Original arrayNth element
lengthGet the length of an arrayOriginal arraythe length of an array
sublistTake a sub-array of length len starting from the first element. Subscripts start at 11. length len
2. Original array
sub-array
sublistTake a sub-array of length len starting from the nth element. Subscripts start at 11. start position n
2. length len
3. Original array
sub-array
firstTake the first element. Subscripts start at 1Original array1st element
lasttake the last elementOriginal arraythe last element
containsDetermine whether the data is in the array1. data
2. Original array
Boolean value
erlang
nth(2, [1,2,3,4]) = 2
length([1,2,3,4]) = 4
sublist(3, [1,2,3,4]) = [1,2,3,4]
sublist(1,2,[1,2,3,4]) = [1, 2]
first([1,2,3,4]) = 1
last([1,2,3,4]) = 4
contains(2, [1,2,3,4]) = true

Hash function

function namepurposeparameterreturned value
md5evaluate MD5dataMD5 value
shaevaluate SHAdataSHA value
sha256evaluate SHA256dataSHA256 value
erlang
md5('some val') = '1b68352b3e9c2de52ffd322e30bffcc4'
sha('some val') = 'f85ba28ff5ea84a0cbfa118319acb0c5e58ee2b9'
sha256('some val') = '67f97635d8a0e064f60ba6e8846a0ac0be664f18f0c1dc6445cd3542d2b71993'

Compresses and Uncompresses functions

FunctionPurposeParametersReturned value
gzipCompresses data with gz headers and checksum.Raw binary dataCompressed binary data
gunzipUncompresses data with gz headers and checksum.Compressed binary dataRaw binary data
zipCompresses data without zlib headers and checksum.Raw binary dataCompressed binary data
unzipUncompresses data without zlib headers and checksum.Compressed binary dataRaw binary data
zip_compressCompresses data with zlib headers and checksum.Raw binary dataCompressed binary data
zip_uncompressUncompresses data with zlib headers and checksum.Compressed binary dataRaw binary data
erlang
bin2hexstr(gzip('hello world')) = '1F8B0800000000000003CB48CDC9C95728CF2FCA49010085114A0D0B000000'
gunzip(hexstr2bin('1F8B0800000000000003CB48CDC9C95728CF2FCA49010085114A0D0B000000')) = 'hello world'

bin2hexstr(zip('hello world')) = 'CB48CDC9C95728CF2FCA490100'
unzip(hexstr2bin('CB48CDC9C95728CF2FCA490100')) = 'hello world'

bin2hexstr(zip_compress('hello world')) = '789CCB48CDC9C95728CF2FCA4901001A0B045D'
zip_uncompress(hexstr2bin('789CCB48CDC9C95728CF2FCA4901001A0B045D')) = 'hello world'

Bit functions

FunctionPurposeParametersReturned value
subbitsGet a given length of bits from the beginning of a binary, and then convert it to an unsigned integer (big-endian).1. The binary
2. The length of bits to get
The unsigned integer
subbitsGet a given length of bits start from the specified offset of a binary, and then convert it to an unsigned integer (big-endian). Offsets are start from 1.1. The binary
2. The offset
3. The length of bits to get
The unsigned integer
subbitsGet a given length of bits start from the specified offset of a binary, and then convert it to a data type according to the arguments provided. Offsets are start from 1.1. The binary
2. The offset
3. The length of bits to get
4. Data Type, can be one of 'integer', 'float', 'bits'
5. Signedness, only works for integers, can be one of 'unsigned', 'signed',
6. Endianness, only works for integers, can be one of 'big', 'little'
The data got from the binary
erlang
subbits('abc', 8) = 97
subbits('abc', 9, 8) = 98
subbits('abc', 17, 8) = 99
subbits('abc', 9, 16, 'integer', 'signed', 'big') = 25187
subbits('abc', 9, 16, 'integer', 'signed', 'little') = 25442

Decoding and encoding functions

FunctionPurposeParametersReturned value
base64_encodeBASE64 encodeThe binary to be encodedThe encoded base64-formatted string
base64_decodeBASE64 decodeThe base64-formatted string to be decodedThe decoded binary
json_encodeJSON encodeThe data to be encodedThe JSON string
json_decodeJSON decodeThe JSON string to be decodedThe decoded data
bin2hexstrBinary to Hex StringThe binaryThe hex string
hexstr2binBinary to Hex StringThe hex stringThe binary
erlang
base64_encode('some val') = 'c29tZSB2YWw='
base64_decode('c29tZSB2YWw=') = 'some val'
json_encode(json_decode( '{ "a" : 1 }' )) = '{"a":1}'
bin2hexstr(hexstr2bin('ABEF123')) = 'ABEF123'
FunctionPurposeParametersReturned value
schema_encodeEncode according to schema. The schema should be created before using this function1. The Schema ID defined by schema registry 2. The data to be encoded 3..N. The remaining arguments according to the schema typeThe encoded data
schema_decodeDecode according to schema. The schema should be created before using this function1. The Schema ID defined by schema registry 2. The data to be decoded 3..N. The remaining arguments according to the schema typeThe decoded data

For examples of schema_encode() and schema_decode(), see schema registry {% endemqxee %}

Time and date functions

FunctionPurposeParametersReturned value
now_timestampReturn the unix epoch of now in second-The unix epoch
now_timestampReturn the unix epoch of now, in given time unit1. The time unitThe unix epoch
now_rfc3339Create a RFC3339 time string of now in second-The time string of format RFC3339
now_rfc3339Create a RFC3339 time string of now, in given time unit1. The time unitThe time string of format RFC3339
unix_ts_to_rfc3339Convert an unix epoch (in second) to RFC3339 time string1. The unix epoch in secondThe time string of format RFC3339
unix_ts_to_rfc3339Convert an unix epoch to RFC3339 time string, using the given time unit1. The unix epoch
2. The time unit
The time string of format RFC3339
rfc3339_to_unix_tsConvert a RFC3339 time string (in second) to unix epoch1. The time string of format RFC3339The unix epoch
rfc3339_to_unix_tsConvert a RFC3339 time string to unix epoch, using the given time unit1. The time string of format RFC3339
2. The time unit
The unix epoch
format_dateTimestamp to formatted time1. The time unit (refer to The time unit)
2. The time offset (refer to time offset definition)
3. The date format (refer to time string codec format)
4. The timestamp (optional parameter, default is current time)
Formatted time
date_to_unix_tsFormatted time to timestamp1. The time unit (refer to the following table for definition)
2. The time offset (optional, when not filled, use the time offset in the formatted time string, refer to the time offset definition)
3. The date format (refer to time string codec format)
4. The formatted time string
The unix epoch

The time unit

NamePrecisionExample
secondsecond1653557821
millisecondmillisecond1653557852982
microsecondmicrosecond1653557892926417
nanosecondnanosecond1653557916474793000

Time string format

PlaceholderDefinitionRange
%Yyear0000 - 9999
%mmonth01 - 12
%dday01 - 31
%Hhour00 - 12
%Mminute00 - 59
%Ssecond01 - 59
%Nnanosecond000000000 - 999999999
%3Nmillisecond000000 - 999999
%6Nmicrosecond000 - 000
%ztime offset [+|-]HHMM-1159 to +1159
%:ztime offset [+|-]HH:MM-11:59 to +11:59
%::ztime offset [+|-]HH:MM:SS-11:59:59 to +11:59:59

The time offset

OffsetDefinitionExamples
zUTC Zulu Time+00:00
ZUTC Zulu Time. Same as z+00:00
localSystem TimeAutomatic
Beijing +08:00
Zulu +00:00
Stockholm, Sweden +02:00
Los Angeles -08:00
[+|-]HHMM%zBeijing +0800
Zulu +0000
Stockholm, Sweden +0200
Los Angeles -0800
[+|-]HH:MM%:zBeijing +08:00
Zulu +00:00
Stockholm, Sweden +02:00
Los Angeles -08:00
[+|-]HH:MM:SS%::zBeijing +08:00:00
Zulu +00:00:00
Stockholm, Sweden +02:00:00
Los Angeles -08:00:00
integer()SecondsBeijing 28800
Zulu 0
Stockholm, Sweden 7200
Los Angeles -28800
SQL
now_timestamp() = 1650874276
now_timestamp('millisecond') = 1650874318331
now_rfc3339() = '2022-04-25T16:08:41+08:00'
now_rfc3339('millisecond') = '2022-04-25T16:10:10.652+08:00'
unix_ts_to_rfc3339(1650874276) = '2022-04-25T16:11:16+08:00'
unix_ts_to_rfc3339(1650874318331, 'millisecond') = '2022-04-25T16:11:58.331+08:00'
rfc3339_to_unix_ts('2022-04-25T16:11:16+08:00') = 1650874276
rfc3339_to_unix_ts('2022-04-25T16:11:58.331+08:00', 'millisecond') = 1650874318331
format_date('second', '+0800', '%Y-%m-%d %H:%M:%S%:z', 1653561612) = '2022-05-26 18:40:12+08:00'
format_date('second', 'local', '%Y-%m-%d %H:%M:%S%:z') = "2022-05-26 18:48:01+08:00"
format_date('second', 0, '%Y-%m-%d %H:%M:%S%:z') = '2022-05-26 10:42:41+00:00'
date_to_unix_ts('second', '%Y-%m-%d %H:%M:%S%:z', '2022-05-26 18:40:12+08:00') = 1653561612
date_to_unix_ts('second', 'local', '%Y-%m-%d %H-%M-%S', '2022-05-26 18:40:12') = 1653561612
date_to_unix_ts('second', '%Y-%m-%d %H-%M-%S', '2022-05-26 10:40:12') = 1653561612
FunctionPurposeParametersReturned value
mongo_dateCreate a mongodb ISODate type of now-the ISODate
mongo_dateCreate a mongodb ISODate type from the given unix epoch in millisecond1. unix epoch in millisecondthe ISODate
mongo_dateCreate a mongodb ISODate type from the given unix epoch in given time unit1. unix epoch 2. time unit, can be one of 'second', 'millisecond', 'microsecond' or 'nanosecond'the ISODate

The time unit can be one of 'second', 'millisecond', 'microsecond' or 'nanosecond'.

SQL
mongo_date() = 'ISODate("2012-12-19T06:01:17.171Z")'
mongo_date(timestamp) = 'ISODate("2012-12-19T06:01:17.171Z")'
mongo_date(timestamp, 'millisecond') = 'ISODate("2012-12-19T06:01:17.171Z")'