Beam Calcite SQL 标量函数
本页记录 Beam Calcite SQL 支持的 Apache Calcite 函数。
比较函数和运算符
运算符语法 | 描述 |
---|---|
value1 = value2 | 等于 |
value1 <> value2 | 不等于 |
value1 > value2 | 大于 |
value1 >= value2 | 大于或等于 |
value1 < value2 | 小于 |
value1 <= value2 | 小于或等于 |
value IS NULL | value 是否为 null |
value IS NOT NULL | value 是否不为 null |
逻辑函数和运算符
运算符语法 | 描述 |
---|---|
boolean1 OR boolean2 | boolean1 是否为 TRUE 或 boolean2 是否为 TRUE |
boolean1 AND boolean2 | boolean1 和 boolean2 是否都为 TRUE |
NOT boolean | boolean 是否不为 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。 |