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。 |

