Beam Calcite SQL 标量函数

本页记录 Beam Calcite SQL 支持的 Apache Calcite 函数。

比较函数和运算符

运算符语法描述
value1 = value2等于
value1 <> value2不等于
value1 > value2大于
value1 >= value2大于或等于
value1 < value2小于
value1 <= value2小于或等于
value IS NULLvalue 是否为 null
value IS NOT NULLvalue 是否不为 null

逻辑函数和运算符

运算符语法描述
boolean1 OR boolean2boolean1 是否为 TRUE 或 boolean2 是否为 TRUE
boolean1 AND boolean2boolean1 和 boolean2 是否都为 TRUE
NOT booleanboolean 是否不为 TRUE;如果 boolean 为 UNKNOWN 则返回 UNKNOWN

算术表达式

运算符语法描述
numeric1 + numeric2返回 numeric1 加上 numeric2
numeric1 - numeric2返回 numeric1 减去 numeric2
numeric1 * numeric2返回 numeric1 乘以 numeric2
numeric1 / numeric2返回 numeric1 除以 numeric2
MOD(numeric, numeric)返回 numeric1 除以 numeric2 的余数(模数)。结果仅在 numeric1 为负数时为负数

数学函数

运算符语法描述
ABS(numeric)返回 numeric 的绝对值
SQRT(numeric)返回 numeric 的平方根
LN(numeric)返回 numeric 的自然对数(以 e 为底)
LOG10(numeric)返回 numeric 的以 10 为底的对数
EXP(numeric)返回 e 的 numeric 次方
ACOS(numeric)返回 numeric 的反余弦
ASIN(numeric)返回 numeric 的反正弦
ATAN(numeric)返回 numeric 的反正切
COT(numeric)返回 numeric 的余切
DEGREES(numeric)将 numeric 从弧度转换为度数
RADIANS(numeric)将 numeric 从度数转换为弧度
SIGN(numeric)返回 numeric 的符号
SIN(numeric)返回 numeric 的正弦
TAN(numeric)返回 numeric 的正切
ROUND(numeric1, numeric2)将 numeric1 向右舍入到小数点后 numeric2 位

日期函数

运算符语法描述
LOCALTIME在会话时区中返回当前日期和时间,以 TIME 数据类型的值表示
LOCALTIME(precision)在会话时区中返回当前日期和时间,以 TIME 数据类型的值表示,精度为 precision 位
LOCALTIMESTAMP在会话时区中返回当前日期和时间,以 TIMESTAMP 数据类型的值表示
LOCALTIMESTAMP(precision)在会话时区中返回当前日期和时间,以 TIMESTAMP 数据类型的值表示,精度为 precision 位
CURRENT_TIME在会话时区中返回当前时间,以 TIMESTAMP WITH TIME ZONE 数据类型的值表示
CURRENT_DATE在会话时区中返回当前日期,以 DATE 数据类型的值表示
CURRENT_TIMESTAMP在会话时区中返回当前日期和时间,以 TIMESTAMP WITH TIME ZONE 数据类型的值表示
EXTRACT(timeUnit FROM datetime)从日期时间值表达式中提取并返回指定日期时间字段的值
FLOOR(datetime TO timeUnit)将 datetime 向下舍入到 timeUnit
CEIL(datetime TO timeUnit)将 datetime 向上舍入到 timeUnit
YEAR(date)等效于 EXTRACT(YEAR FROM date)。返回一个整数。
QUARTER(date)等效于 EXTRACT(QUARTER FROM date)。返回 1 到 4 之间的整数。
MONTH(date)等效于 EXTRACT(MONTH FROM date)。返回 1 到 12 之间的整数。
WEEK(date)等效于 EXTRACT(WEEK FROM date)。返回 1 到 53 之间的整数。
DAYOFYEAR(date)等效于 EXTRACT(DOY FROM date)。返回 1 到 366 之间的整数。
DAYOFMONTH(date)等效于 EXTRACT(DAY FROM date)。返回 1 到 31 之间的整数。
DAYOFWEEK(date)等效于 EXTRACT(DOW FROM date)。返回 1 到 7 之间的整数。
HOUR(date)等效于 EXTRACT(HOUR FROM date)。返回 0 到 23 之间的整数。
MINUTE(date)等效于 EXTRACT(MINUTE FROM date)。返回 0 到 59 之间的整数。
SECOND(date)等效于 EXTRACT(SECOND FROM date)。返回 0 到 59 之间的整数。

字符串函数

运算符语法描述
string || string连接两个字符字符串
CHAR_LENGTH(string)返回字符字符串中的字符数
CHARACTER_LENGTH(string)与 CHAR_LENGTH(string) 相同
UPPER(string)返回转换为大写的字符字符串
LOWER(string)返回转换为小写的字符字符串
POSITION(string1 IN string2)返回 string1 在 string2 中首次出现的索引位置
POSITION(string1 IN string2 FROM integer)返回 string1 在 string2 中首次出现的索引位置,从给定点开始(非标准 SQL)
TRIM( { BOTH | LEADING | TRAILING } string1 FROM string2)从 string1 的开头/结尾/两端删除包含仅 string1 中的字符的最长字符串
OVERLAY(string1 PLACING string2 FROM integer [ FOR integer2 ])用 string2 替换 string1 的子字符串
SUBSTRING(string FROM integer)返回字符字符串的子字符串,从给定点开始
SUBSTRING(string FROM integer FOR integer)返回字符字符串的子字符串,从给定点开始,长度为给定长度
INITCAP(string)返回一个字符串,其中每个单词的第一个字母转换为大写,其余字母转换为小写。单词是由非字母数字字符分隔的字母数字字符序列。

条件函数

运算符语法描述
CASE value
WHEN value1 [, value11 ]* THEN result1
[ WHEN valueN [, valueN1 ]* THEN resultN ]*
[ ELSE resultZ ]
END
简单 case
CASE
WHEN condition1 THEN result1
[ WHEN conditionN THEN resultN ]*
[ ELSE resultZ ]
END
搜索 case
NULLIF(value, value)如果值相同则返回 NULL。例如,NULLIF(5, 5) 返回 NULL;NULLIF(5, 0) 返回 5。
COALESCE(value, value [, value ]*)如果第一个值为 null 则提供一个值。例如,COALESCE(NULL, 5) 返回 5。