内置函数(Built-In Functions)

Flink Table API 和 SQL 为用户提供了一组用于数据转换的内置函数。这一页简要介绍了它们。如果您需要的函数目前还不支持,您可以实现一个用户定义函数。如果您认为该函数足够通用,请打开一个 Jira 问题并提供详细描述。

标量函数(Scalar Functions)

标量函数接受零个、一个或多个值作为输入,并返回一个值作为结果。

比较函数(Comparison Functions)

比较函数 描述
  1. value1 = value2

如果 value1 等于 value2,则返回TRUE;如果 value1value2 为空(NULL),则返回未知(UNKNOWN)。

  1. value1 <> value2

如果 value1 不等于 value2,则返回 TRUE;如果 value1value2 为空(NULL),则返回未知(UNKNOWN)。

  1. value1 > value2

如果 value1 大于 value2,则返回 TRUE;如果 value1value2 为空(NULL),则返回未知(UNKNOWN)。

  1. value1 >= value2

如果 value1 大于或等于 value2,则返回 TRUE;如果 value1value2 为空(NULL),则返回未知(UNKNOWN)。

  1. value1 < value2

如果 value1 小于 value2,则返回 TRUE;如果 value1value2 为空(NULL),则返回未知(UNKNOWN)。

  1. value1 <= value2

如果 value1 小于或等于 value2,则返回 TRUE;如果 value1value2 为空(NULL),则返回未知(UNKNOWN)。

  1. value IS NULL

如果 value 为空(NULL),则返回 TRUE。

  1. value IS NOT NULL

如果 value 不为空(NULL),则返回 TRUE。

  1. value1 IS DISTINCT FROM value2

如果两个值不相等,则返回 TRUE。空值(NULL)在这里被视为相同的。如 1 IS DISTINCT FROM NULL 返回 TRUE;NULL IS DISTINCT FROM NULL返回 FALSE。

  1. value1 IS NOT DISTINCT FROM value2

如果两个值相等,则返回 TRUE。空值(NULL)在这里被视为相同的。如 1 IS NOT DISTINCT FROM NULL返回 FALSE;NULL IS NOT DISTINCT FROM NULL返回 TRUE。

  1. value1 BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3

默认情况下(或使用非对称关键字),如果 value1 大于或等于 value2,小于或等于 value3,则返回TRUE。如果 value1 包含在 value2value3 之间,则使用对称关键字返回TRUE。当 value2value3 为空时,返回 FALSE 或 unknown。如 12 BETWEEN 15 AND 12 返回 FALSE;12 BETWEEN SYMMETRIC 15 AND 12 返回 TRUE;12 BETWEEN 10 AND NULL返回未知(UNKNOWN);12 BETWEEN NULL AND 10返回 FALSE;12 BETWEEN SYMMETRIC NULL AND 12返回未知数(UNKNOWN)。

  1. value1 NOT BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3

默认情况下(或使用非对称关键字),如果 value1 小于 value2 或大于 value3,则返回TRUE。如果 value2value3 之间没有包含 value1,则使用对称关键字返回 TRUE。当 value2value3 为空时,返回 TRUE 或 unknown。如 12 NOT BETWEEN 15 AND 12 返回TRUE;12 NOT BETWEEN SYMMETRIC 15 AND 12返回 FALSE;12 NOT BETWEEN NULL AND 15 返回未知数(UNKNOWN);12 NOT BETWEEN 15 AND NULL 返回 TRUE;12 NOT BETWEEN SYMMETRIC 12 AND NULL返回 UNKNOWN。

  1. string1 LIKE string2 [ ESCAPE char ]

如果 string1 匹配模式 string2,则返回 TRUE;如果 string1string2 为空,则返回未知(NULL)。如果需要,可以定义转义字符。注意: 还不支持转义字符。

  1. string1 NOT LIKE string2 [ ESCAPE char ]

如果 string1 与模式 string2 不匹配,则返回 TRUE;如果 string1string2 为空(NULL),则返回未知(UNKNOWN)。如果需要,可以定义转义字符。注意: 还不支持转义字符。

  1. string1 SIMILAR TO string2 [ ESCAPE char ]

如果 string1 匹配 SQL 正则表达式 string2,则返回 TRUE;如果 string1string2 为空( NULL),则返回未知(UNKNOWN)。如果需要,可以定义转义字符。注意: 还不支持转义字符。

  1. string1 NOT SIMILAR TO string2 [ ESCAPE char ]

如果 string1 不匹配 SQL 正则表达式 string2,则返回 TRUE;如果 string1string2 为空(NULL),则返回未知(UNKNOWN)。如果需要,可以定义转义字符。注意: 还不支持转义字符。

  1. value1 IN (value2 [, value3]* )

如果 value1 存在于给定列表 (value2, value3,…) 中,则返回 TRUE。当 (value2, value3,…) 包含 NULL,如果可以找到该元素,则返回 TRUE,否则返回 UNKNOWN。如果 value1 为空,则始终返回 UNKNOWN。如 4 IN (1, 2, 3)返回 FALSE;1 IN (1, 2, NULL) 返回 TRUE;4 IN (1, 2, NULL)返回 UNKNOWN。

  1. value1 NOT IN (value2 [, value3]* )

如果 value1 不存在于给定列表 (value2, value3,…) 中,则返回 TRUE。当 (value2, value3, …) 包含 NULL,如果可以找到 value1 ,则返回 FALSE,否则返回 UNKNOWN。如果 value1 为 NULL,则始终返回 UNKNOWN。如4 NOT IN (1, 2, 3) 返回 TRUE;1 NOT IN (1, 2, NULL) 返回 FALSE;4 NOT IN (1, 2, NULL)返回 UNKNOWN。

  1. EXISTS (sub-query)

如果 subquery 返回至少一行,则返回 TRUE。只有在可以在联接和组操作中重写操作时,才支持该操作。注意: 对于流查询,操作在 join 和 group 操作中重写。计算查询结果所需的状态可能会无限增长,这取决于不同输入行的数量。请提供具有有效保留间隔的查询配置,以防止状态过大。有关详细信息,请参见查询配置

  1. value IN (sub-query)

如果 value 等于子查询返回的行,则返回 TRUE。注意: 对于流查询,操作在 join 和 group 操作中重写。计算查询结果所需的状态可能会无限增长,这取决于不同输入行的数量。请提供具有有效保留间隔的查询配置,以防止状态过大。有关详细信息,请参见查询配置

  1. value NOT IN (sub-query)

| 如果 value 不等于 sub-query 返回的每一行,则返回 TRUE。注意: 对于流查询,操作在 join 和 group 操作中重写。计算查询结果所需的状态可能会无限增长,这取决于不同输入行的数量。请提供具有有效保留间隔的查询配置,以防止状态过大。有关详细信息,请参见查询配置。 |

比较函数 描述
  1. ANY1 === ANY2

如果 ANY1 等于 ANY2,则返回 TRUE;如果 ANY1ANY2 为 NULL,则返回 UNKNOWN。

  1. ANY1 !== ANY2

如果 ANY1 不等于 ANY2,则返回 TRUE;如果 ANY1ANY2 为 NULL,则返回 UNKNOWN。

  1. ANY1 > ANY2

如果 ANY1 大于 ANY2,则返回 TRUE;如果 ANY1ANY2 为 NULL,则返回 UNKNOWN。

  1. ANY1 >= ANY2

如果 ANY1 大于或等于 ANY2,则返回 TRUE;如果 ANY1ANY2 为 NULL,则返回 UNKNOWN。

  1. ANY1 < ANY2

如果 ANY1 小于 ANY2,则返回 TRUE;如果 ANY1ANY2 为 NULL,则返回 UNKNOWN。

  1. ANY1 <= ANY2

如果 ANY1 小于或等于 ANY2,则返回 TRUE;如果 ANY1ANY2 为 NULL,则返回 UNKNOWN。

  1. ANY.isNull

如果 ANY 为空,则返回 TRUE。

  1. ANY.isNotNull

如果 ANY 不为空,则返回 TRUE。

  1. STRING1.like(STRING2)

如果 STRING1 匹配模式 STRING2,则返回 TRUE;如果 STRING1STRING2 为 NULL,则返回 UNKNOWN。如 "JoKn".like("Jo_n%") 返回 TRUE。

  1. STRING.similar(STRING)

如果 STRING1 匹配 SQL 正则表达式 STRING2,则返回 TRUE;如果 STRING1STRING2 为 NULL,则返回 UNKNOWN。如 "A".similar("A+") 返回 TRUE。

  1. ANY1.in(ANY2, ANY3, ...)

如果 ANY1 存在于给定列表 (ANY2, ANY3,…) 中,则返回 TRUE。当 (ANY2, ANY3,…) 包含 NULL,如果可以找到该元素,则返回 TRUE,否则返回U NKNOWN。如果 ANY1 为空,则始终返回 UNKNOWN。如 4.in(1, 2, 3) 返回 FALSE。

  1. ANY.in(TABLE)

如果 ANY 等于子查询 TABLE 返回的一行,则返回 TRUE。注意: 对于流查询,操作在 join 和 group 操作中重写。计算查询结果所需的状态可能会无限增长,这取决于不同输入行的数量。请提供具有有效保留间隔的查询配置,以防止状态过大。有关详细信息,请参见查询配置

  1. ANY1.between(ANY2, ANY3)

如果 ANY1 大于或等于 ANY2 且小于或等于 ANY3,则返回 TRUE。当 ANY2ANY3 为空时,返回 FALSE 或 UNKNOWN。如 12.between(15, 12) 返回 FALSE;12.between(10, Null(INT)) 返回 UNKNOWN;12.between(Null(INT), 10)返回 FALSE。

  1. ANY1.notBetween(ANY2, ANY3)

| 如果 ANY1 小于 ANY2 或大于 ANY3,则返回 TRUE。当 ANY2ANY3 为空时,返回 TRUE 或 UNKNOWN。如 12.notBetween(15, 12) 返回 TRUE;12.notBetween(Null(INT), 15) 返回 UNKNOWN;12.notBetween(15, Null(INT)) 返回 TRUE。 |

比较函数 描述
  1. ANY1 === ANY2

如果 ANY1 等于 ANY2,则返回 TRUE;如果 ANY1ANY2 为 NULL,则返回 UNKNOWN。

  1. ANY1 !== ANY2

如果 ANY1 不等于 ANY2,则返回 TRUE;如果 ANY1ANY2 为 NULL,则返回 UNKNOWN。

  1. ANY1 > ANY2

如果 ANY1 大于 ANY2,则返回 TRUE;如果 ANY1ANY2 为 NULL,则返回 UNKNOWN。

  1. ANY1 >= ANY2

如果 ANY1 大于或等于 ANY2,则返回 TRUE;如果 ANY1ANY2 为 NULL,则返回 UNKNOWN。

  1. ANY1 < ANY2

如果 ANY1 小于 ANY2,则返回 TRUE;如果 ANY1ANY2 为 NULL,则返回 UNKNOWN。

  1. ANY1 <= ANY2

如果 ANY1 小于或等于 ANY2,则返回 TRUE;如果 ANY1ANY2 为 NULL,则返回 UNKNOWN。

  1. ANY.isNull

如果 ANY 为空,则返回 TRUE。

  1. ANY.isNotNull

如果 ANY 不为空,则返回 TRUE。

  1. STRING1.like(STRING2)

如果 STRING1 匹配模式 STRING2,则返回 TRUE;如果 STRING1STRING2 为空,则返回 UNKNOWN。如 "JoKn".like("Jo_n%") 返回 TRUE。

  1. STRING1.similar(STRING2)

如果 STRING1 匹配 SQL 正则表达式 STRING2,则返回 TRUE;如果 STRING1STRING2 为 NULL,则返回 UNKNOWN。如 "A".similar("A+") 返回 TRUE。

  1. ANY1.in(ANY2, ANY3, ...)

如果 ANY1 存在于给定列表 (ANY2, ANY3,…) 中,则返回 TRUE。当 (ANY2, ANY3,…) 包含 NULL,如果可以找到该元素,则返回 TRUE,否则返回 UNKNOWN。如果 ANY1 为 NULL,则始终返回 UNKNOWN。如 4.in(1, 2, 3) 返回 FALSE。

  1. ANY.in(TABLE)

如果 ANY 等于子查询 TABLE 返回的一行,则返回 TRUE。注意: 对于流查询,操作在 join 和 group 操作中重写。计算查询结果所需的状态可能会无限增长,这取决于不同输入行的数量。请提供具有有效保留间隔的查询配置,以防止状态过大。有关详细信息,请参见查询配置

  1. ANY1.between(ANY2, ANY3)

如果 ANY1 大于或等于 ANY2 且小于或等于 ANY3,则返回 TRUE。当 ANY2ANY3 为空时,返回 FALSE 或 UNKNOWN。如 12.between(15, 12) 返回 FALSE;12.between(10, Null(Types.INT)) 返回 UNKNOWN; 12.between(Null(Types.INT), 10) 返回 FALSE。

  1. ANY1.notBetween(ANY2, ANY3)

| 如果 ANY1 小于 ANY2 或大于 ANY3,则返回 TRUE。当 ANY2ANY3 为空时,返回 TRUE 或 UNKNOWN。如 12.notBetween(15, 12) 返回 TRUE; 12.notBetween(Null(Types.INT), 15) 返回 UNKNOWN; 12.notBetween(15, Null(Types.INT)) 返回 TRUE。 |

逻辑函数(Logical Functions)

逻辑函数 描述
  1. boolean1 OR boolean2

如果 boolean1 为真或 boolean2 为真,则返回 TRUE。支持三值逻辑(three-valued logic)。如 TRUE OR UNKNOWN 返回 TRUE。

  1. boolean1 AND boolean2

如果 boolean1boolean2 都为真,则返回 TRUE。支持三值逻辑(three-valued logic)。如 TRUE AND UNKNOWN 返回 UNKNOWN。

  1. NOT boolean

如果 boolean 为假,则返回 TRUE;如果 boolean 为真,则返回 FALSE;如果 boolean 为 UNKNOWN,则返回 UNKNOWN。

  1. boolean IS FALSE

如果 boolean 为假,则返回 TRUE;如果 boolean 为真或 UNKNOWN,则返回 FALSE。

  1. boolean IS NOT FALSE

如果 boolean 为真或未知(UNKNOWN),则返回 TRUE;如果 boolean 为假,则返回 FALSE。

  1. boolean IS TRUE

如果 boolean 为真,则返回 TRUE;如果 boolean 为假或未知(UNKNOWN),则返回 FALSE。

  1. boolean IS NOT TRUE

如果 boolean 为假或未知(UNKNOWN),则返回 TRUE;如果 boolean 为假,则返回 FALSE。

  1. boolean IS UNKNOWN

如果 boolean 为未知(UNKNOWN),则返回 TRUE;如果 boolean 为真或假,则返回 FALSE。

  1. boolean IS NOT UNKNOWN

| 如果 boolean 为真或假,则返回 TRUE;如果 boolean 未知(UNKNOWN),则返回 FALSE。 |

逻辑函数 描述
  1. BOOLEAN1 || BOOLEAN2

如果 BOOLEAN1 为真或 BOOLEAN2 为真,则返回 TRUE。支持三值逻辑(three-valued logic)。如 true || Null(BOOLEAN) 返回 TRUE。

  1. BOOLEAN1 && BOOLEAN2

如果 BOOLEAN1BOOLEAN2 都为真,则返回 TRUE。支持三值逻辑(three-valued logic)。如 true && Null(BOOLEAN) 返回 UNKNOWN。

  1. !BOOLEAN

如果 BOOLEAN 为假,则返回 TRUE;如果 BOOLEAN 为真,则返回 FALSE;如果 BOOLEAN 未知(UNKNOWN),则返回未知(UNKNOWN)。

  1. BOOLEAN.isTrue

如果 BOOLEAN 为真,则返回 TRUE;如果 BOOLEAN 为假或未知(UNKNOWN),则返回 FALSE。

  1. BOOLEAN.isFalse

如果 BOOLEAN 为假,则返回 TRUE;如果 BOOLEAN 为真或未知,则返回 FALSE。

  1. BOOLEAN.isNotTrue

如果 BOOLEAN 为假或未知,则返回 TRUE;如果 BOOLEAN 为假,则返回 FALSE。

  1. BOOLEAN.isNotFalse

| 如果 BOOLEAN 为真或未知,则返回 TRUE;如果 BOOLEAN 为假,则返回 FALSE。 |

逻辑函数 描述
  1. BOOLEAN1 || BOOLEAN2

如果 BOOLEAN1 为真或 BOOLEAN2 为真,则返回 TRUE。支持三值逻辑(three-valued logic)。如 true || Null(Types.BOOLEAN) 返回 TRUE。

  1. BOOLEAN1 && BOOLEAN2

如果 BOOLEAN1BOOLEAN2 都为真,则返回 TRUE。支持三值逻辑(three-valued logic)。如 true && Null(Types.BOOLEAN) 返回 UNKNOWN。

  1. !BOOLEAN

如果 BOOLEAN 为假,则返回 TRUE;如果 BOOLEAN 为真,则返回 FALSE;如果 BOOLEAN 未知(UNKNOWN),则返回未知(UNKNOWN)。

  1. BOOLEAN.isTrue

如果 BOOLEAN 为真,则返回 TRUE;如果 BOOLEAN 为假或未知(UNKNOWN),则返回 FALSE。

  1. BOOLEAN.isFalse

如果 BOOLEAN 为假,则返回 TRUE;如果 BOOLEAN 为真或未知(UNKNOWN),则返回 FALSE。

  1. BOOLEAN.isNotTrue

如果 BOOLEAN 为假或未知(UNKNOWN),则返回 TRUE;如果 BOOLEAN 为假,则返回 FALSE。

  1. BOOLEAN.isNotFalse

| 如果 BOOLEAN 为真或未知(UNKNOWN),则返回 TRUE;如果 BOOLEAN 为假,则返回 FALSE。 |

算术函数(Arithmetic Functions)

算术函数 描述
  1. + numeric

返回 numeric

  1. - numeric

返回负 numeric

  1. numeric1 + numeric2

返回 numeric1numeric2

  1. numeric1 - numeric2

返回 numeric1numeric2

  1. numeric1 * numeric2

返回 numeric1 乘以 numeric2

  1. numeric1 / numeric2

返回 numeric1 除以 numeric2

  1. POWER(numeric1, numeric2)

返回 numeric1numeric2 次方。

  1. ABS(numeric)

返回 numeric 的绝对值。

  1. MOD(numeric1, numeric2)

返回 numeric1 除以 numeric2 的余数(模数)。只有当 numeric1 为负时,结果才为负。

  1. SQRT(numeric)

返回 numeric 的平方根。

  1. LN(numeric)

返回 numeric 的自然对数(以e为底)。

  1. LOG10(numeric)

返回 numeric 的以10为底的对数。

  1. LOG2(numeric)

返回 numeric 的以2为底的对数。

  1. LOG(numeric2)
  2. LOG(numeric1, numeric2)

当使用一个参数调用时,返回 numeric2 的自然对数。当使用两个参数调用时,该函数将返回 numeric2 的以 numeric1 为底的对数。注意: 当前,numeric2 必须大于0,numeric1 必须大于1。

  1. EXP(numeric)

返回 e 的numeric次方。

  1. CEIL(numeric)
  2. CEILING(numeric)

numeric向上舍入,并返回大于或等于numeric的最小数字。

  1. FLOOR(numeric)

numeric向下舍入,并返回小于或等于numeric的最大数字。

  1. SIN(numeric)

返回 numeric 的正弦值。

  1. SINH(numeric)

返回 numeric 的双曲正弦值。返回类型为 DOUBLE

  1. COS(numeric)

返回 numeric 的余弦值。

  1. TAN(numeric)

返回 numeric 的正切值。

  1. TANH(numeric)

返回 numeric 的双曲正切值。返回类型为 DOUBLE

  1. COT(numeric)

返回 numeric 的余切值。

  1. ASIN(numeric)

返回 numeric 的反正弦值。

  1. ACOS(numeric)

返回 numeric 的反余弦值。

  1. ATAN(numeric)

返回 numeric 的反正切值。

  1. ATAN2(numeric1, numeric2)

返回坐标 (numeric1, numeric2) 的反正切值。

  1. COSH(numeric)

返回 NUMERIC 的双曲余弦值。返回值类型为 DOUBLE

  1. DEGREES(numeric)

返回弧度 numeric 的度数表示。

  1. RADIANS(numeric)

返回 numeric 度的弧度表示。

  1. SIGN(numeric)

返回 numeric 的符号。

  1. ROUND(numeric, integer)

返回舍入为 numericinteger 小数位的数字。

  1. PI

返回一个比任何其他值更接近于 pi 的值。

  1. E()

返回一个比任何其他值更接近 e 的值。

  1. RAND()

返回介于0.0(包含)和1.0(不包含)之间的伪随机双精度值。

  1. RAND(integer)

返回一个介于0.0(包含)和1.0(不包含)之间的伪随机双值,初始种子值为 integer。如果两个 RAN D函数具有相同的初始种子,则它们将返回相同的数字序列。

  1. RAND_INTEGER(integer)

返回一个介于0(包括)和integer(不包含)之间的伪随机整数值。

  1. RAND_INTEGER(integer1, integer2)

返回带有初始种子的介于0(包含)和指定值(不包含)之间的伪随机整数值。如果两个 RAND_INTEGER 函数具有相同的初始种子和绑定,则它们将返回相同的数字序列。

  1. UUID()

根据RFC 4122类型4 (伪随机生成的) UUID返回UUID(通用唯一标识符)字符串(例如,”3d3c68f7-f608-473f-b60c-b0c44ad4cc4e”)。UUID是使用加密的强伪随机数生成器生成的。

  1. BIN(integer)

以二进制格式返回 integer 的字符串表示形式。如果 integer 为NULL,则返回 NULL。例如 BIN(4) 返回 ‘100’ 和 BIN(12) 返回’1100’。

  1. HEX(numeric)
  2. HEX(string)

| 以十六进制格式返回整数 numeric 值或 string 的字符串表示形式。如果参数为 NULL,则返回 NULL。例如,数字 20 返回 “14”,数字 100 导致 “64”,字符串 “hello,world” 返回 “68656C6C6F2C776F726C64”。 |

算术函数 描述
  1. + NUMERIC

返回 NUMERIC.

  1. - NUMERIC

返回负 NUMERIC.

  1. NUMERIC1 + NUMERIC2

返回 NUMERIC1NUMERIC2.

  1. NUMERIC1 - NUMERIC2

返回 NUMERIC1NUMERIC2.

  1. NUMERIC1 * NUMERIC2

返回 NUMERIC1 乘以 NUMERIC2.

  1. NUMERIC1 / NUMERIC2

返回 NUMERIC1 除以 NUMERIC2.

  1. NUMERIC1.power(NUMERIC2)

返回 NUMERIC1NUMERIC2 次方。

  1. NUMERIC.abs()

返回 NUMERIC 的绝对值。

  1. NUMERIC1 % NUMERIC2

返回 NUMERIC1 除以 NUMERIC2 的余数(模数)。只有当 numeric1 为负时,结果才为负。

  1. NUMERIC.sqrt()

返回NUMERIC的平方根。

  1. NUMERIC.ln()

返回 NUMERIC 的自然对数(以e为底)。

  1. NUMERIC.log10()

返回 NUMERIC 的以10为底的对数。

  1. NUMERIC.log2()

返回 NUMERIC 的以2为底的对数。

  1. NUMERIC1.log()
  2. NUMERIC1.log(NUMERIC2)

当无参数调用时,返回 NUMERIC1 的自然对数。当使用参数调用时,返回以NUMERIC2为底的 NUMERIC1 的对数。注意: 当前,NUMERIC1 必须大于0,NUMERIC2 必须大于1。

  1. NUMERIC.exp()

返回 e 的 NUMERIC 次方。

  1. NUMERIC.ceil()

NUMERIC 向上舍入,并返回大于或等于 NUMERIC 的最小数字。

  1. NUMERIC.floor()

NUMERIC 向下舍入,并返回小于或等于 NUMERIC 的最大数字。

  1. NUMERIC.sin()

返回NUMERIC的正弦值。

  1. NUMERIC.sinh()

返回 NUMERIC 的双曲正弦值。返回类型为 DOUBLE

  1. NUMERIC.cos()

返回 NUMERIC 的余弦值。

  1. NUMERIC.tan()

返回 NUMERIC 的正切值。

  1. NUMERIC.tanh()

返回 NUMERIC 的双曲正切值。返回类型为 DOUBLE

  1. NUMERIC.cot()

返回 NUMERIC 的余切值。

  1. NUMERIC.asin()

返回 NUMERIC 的反正弦值。

  1. NUMERIC.acos()

返回 NUMERIC 的反余弦值。

  1. NUMERIC.atan()

返回 NUMERIC 的反正切值。

  1. atan2(NUMERIC1, NUMERIC2)

返回坐标 (NUMERIC1, NUMERIC2) 的反正切值。

  1. NUMERIC.cosh()

返回 NUMERIC 的双曲余弦值。返回值类型为 DOUBLE

  1. NUMERIC.degrees()

返回弧度 NUMERIC 的度数表示。

  1. NUMERIC.radians()

返回 NUMERIC 度的弧度表示。

  1. NUMERIC.sign()

返回 NUMERIC 的符号。

  1. NUMERIC.round(INT)

返回舍入为 NUMERICINT 小数位的数字。

  1. pi()

返回一个比任何其他值更接近于 pi 的值。

  1. e()

返回一个比任何其他值更接近 e 的值。

  1. rand()

返回介于0.0(包含)和1.0(不包含)之间的伪随机双精度值。

  1. rand(INTEGER)

返回一个介于0.0(包含)和1.0(排除)之间的伪随机双精度值,初始种子值为 INTEGER。如果两个RAND函数具有相同的初始种子,则它们将返回相同的数字序列。

  1. randInteger(INTEGER)

返回一个介于0(包括)和 INTEGER (不包括)之间的伪随机整数值。

  1. randInteger(INTEGER1, INTEGER2)

返回一个介于0(包含)和 INTEGER2 (不包括)之间的伪随机整数值,初始种子为 INTEGER1。如果两个randInteger函数具有相同的初始种子和边界,那么它们将返回相同的数字序列。

  1. uuid()

根据RFC 4122类型4 (伪随机生成的) UUID返回UUID(通用唯一标识符)字符串(例如,”3d3c68f7-f608-473f-b60c-b0c44ad4cc4e”)。UUID是使用加密的强伪随机数生成器生成的。

  1. INTEGER.bin()

以二进制格式返回 INTEGER 的字符串表示形式。如果 INTEGER 为NULL,则返回 NULL。例如 4.bin() 返回 “100”,BIN(12) 返回 “1100”。

  1. NUMERIC.hex()
  2. STRING.hex()

| 以十六进制格式返回整数 NUMERIC 值或 STRING 的字符串表示形式。如果参数为 NULL,则返回 NULL。例如,数字 20 返回 “14”,数字 100 导致 “64”,字符串 “hello,world” 导致 “68656C6C6F2C776F726C64”。 |

算术函数 描述
  1. + NUMERIC

返回 NUMERIC.

  1. - NUMERIC

返回负 NUMERIC.

  1. NUMERIC1 + NUMERIC2

返回 NUMERIC1NUMERIC2.

  1. NUMERIC1 - NUMERIC2

返回 NUMERIC1NUMERIC2.

  1. NUMERIC1 * NUMERIC2

返回 NUMERIC1 乘以 NUMERIC2.

  1. NUMERIC1 / NUMERIC2

返回 NUMERIC1 除以 NUMERIC2.

  1. NUMERIC1.power(NUMERIC2)

返回 NUMERIC1NUMERIC2 次方。

  1. NUMERIC.abs()

返回 NUMERIC 的绝对值。

  1. NUMERIC1 % NUMERIC2

返回 NUMERIC1 除以 NUMERIC2 的余数(模数)。只有当 numeric1 为负时,结果才为负。

  1. NUMERIC.sqrt()

返回 NUMERIC 的平方根。

  1. NUMERIC.ln()

返回 NUMERIC 的自然对数(以e为底)。

  1. NUMERIC.log10()

返回 NUMERIC 的以10为底的对数。

  1. NUMERIC.log2()

返回 NUMERIC 的以2为底的对数。

  1. NUMERIC1.log()
  2. NUMERIC1.log(NUMERIC2)

当无参数调用时,返回 NUMERIC1 的自然对数。当使用参数调用时,返回 NUMERIC1NUMERIC2 为底的对数。注意: 当前,NUMERIC1 必须大于0,NUMERIC2 必须大于1。

  1. NUMERIC.exp()

返回 e 的 NUMERIC 次方。

  1. NUMERIC.ceil()

NUMERIC 向上舍入,并返回大于或等于 NUMERIC 的最小数字。

  1. NUMERIC.floor()

NUMERIC 向下舍入,并返回小于或等于 NUMERIC 的最大数字。

  1. NUMERIC.sin()

返回 NUMERIC 的正弦值。

  1. NUMERIC.sinh()

返回 NUMERIC 的双曲正弦。返回类型为 DOUBLE

  1. NUMERIC.cos()

返回 NUMERIC 的余弦值。

  1. NUMERIC.tan()

返回 NUMERIC 的正切值。

  1. NUMERIC.tanh()

返回 NUMERIC 的双曲正切。返回类型为 DOUBLE

  1. NUMERIC.cot()

返回 NUMERIC 的余切。

  1. NUMERIC.asin()

返回 NUMERIC 的反正弦值。

  1. NUMERIC.acos()

返回 NUMERIC 的反余弦值。

  1. NUMERIC.atan()

返回 NUMERIC 的反正切值。

  1. atan2(NUMERIC1, NUMERIC2)

返回坐标 (NUMERIC1, NUMERIC2) 的反正切值。

  1. NUMERIC.cosh()

返回 NUMERIC 的双曲余弦值。返回值类型为 DOUBLE

  1. NUMERIC.degrees()

返回弧度 NUMERIC 的度数表示。

  1. NUMERIC.radians()

返回 NUMERIC 度的弧度表示。

  1. NUMERIC.sign()

返回 NUMERIC 的符号。

  1. NUMERIC.round(INT)

返回舍入为 NUMERICINT 小数位的数字。

  1. pi()

返回一个比任何其他值更接近 pi 的值。

  1. e()

返回一个比任何其他值更接近 e 的值。

  1. rand()

返回介于0.0(包含)和1.0(不包含)之间的伪随机双精度值。

  1. rand(INTEGER)

返回一个介于0.0(包含)和1.0(不包含)之间的伪随机双精度值,初始种子值为 INTEGER。如果两个RAND函数具有相同的初始种子,则它们将返回相同的数字序列。

  1. randInteger(INTEGER)

返回一个介于0(包括)和 INTEGER (不包含)之间的伪随机整数值。

  1. randInteger(INTEGER1, INTEGER2)

返回一个介于0(包含)和 INTEGER2 (不包含)之间的伪随机整数值,初始种子为 INTEGER1。如果两个 randInteger 函数具有相同的初始种子和边界,那么它们将返回相同的数字序列。

  1. uuid()

根据RFC 4122类型4(伪随机生成)UUID返回UUID(通用唯一标识符)字符串(例如,“3d3c68f7-f608-473f-b60c-b0c44ad4cc4e”)。UUID是使用加密的强伪随机数生成器生成的。

  1. INTEGER.bin()

以二进制格式返回 INTEGER 的字符串表示形式。如果 INTEGER 为 NULL,则返回 NULL。例如,4.bin() 返回 “100” 和 12.bin() 返回 “1100”。

  1. NUMERIC.hex()
  2. STRING.hex()

| 以十六进制格式返回整数 NUMERIC 值或 STRING 的字符串表示形式。如果参数为 NULL,则返回 NULL。例如,数字 20 返回 “14”,数字 100 返回 “64”,字符串 “hello,world” 导致 “68656C6C6F2C776F726C64”。 |

字符串函数(String Functions)

字符串函数 描述
  1. string1 || string2

返回 string1string2 的连接。

  1. CHAR_LENGTH(string)
  2. CHARACTER_LENGTH(string)

返回 string 中的字符数。

  1. UPPER(string)

返回大写的 string

  1. LOWER(string)

返回小写的 string

  1. POSITION(string1 IN string2)

返回 string2string1 第一次出现的位置(从1开始);如果在 string2 中找不到 string1,则返回 0。

  1. TRIM([ BOTH | LEADING | TRAILING ] string1 FROM string2)

返回一个字符串,用于从字符串 string2 中删除开头和/或结尾字符string1。默认情况下,删除了两边的空格。

  1. LTRIM(string)

返回一个字符串,用于从字符串 string 中删除左边空格。例如 LTRIM(' This is a test String.') 返回 “This is a test String.”。

  1. RTRIM(string)

返回一个字符串,用于从字符串 string 中删除右边的空格。例如 RTRIM('This is a test String. ') 返回 “This is a test String.”。

  1. REPEAT(string, integer)

返回一个字符串,该字符串重复 string integer 次。例如 REPEAT('This is a test String.', 2) 返回 “This is a test String.This is a test String.”。

  1. REGEXP_REPLACE(string1, string2, string3)

string1 返回一个字符串,与正则表达式 string2 匹配的所有子字符串将被 string3 替换。例如 REGEXP_REPLACE('foobar', 'oo|ar', '') 返回 “fb”。

  1. OVERLAY(string1 PLACING string2 FROM integer1 [ FOR integer2 ])

返回一个字符串,该字符串将 string1integer2 (默认情况下string2 的长度)字符替换为位置 integer1string2。例如 OVERLAY('This is an old string' PLACING ' new' FROM 10 FOR 5) 返回 “This is a new string”。

  1. SUBSTRING(string FROM integer1 [ FOR integer2 ])

返回一个 string 的子字符串,子字符串从位置 integer1 开始,长度 integer2(默认情况下到末尾)。

  1. REPLACE(string1, string2, string3)

返回一个新字符串,它用 string3 (非重叠)替换所有 string1 中出现的 string2。例如 REPLACE("hello world", "world", "flink") 返回 “hello flink”; REPLACE("ababab", "abab", "z") 返回 “zab”。

  1. REGEXP_EXTRACT(string1, string2[, integer])

返回一个来自 string1 的字符串,该字符串由指定的正则表达式 string2 和正则表达式匹配组索引 integer 提取。注意: regex匹配组索引从1开始,0表示匹配整个regex。此外,regex 匹配组索引不应超过已定义组的数目。例如 REGEXP_EXTRACT('foothebar', 'foo(.*?)(bar)', 2)" 返回 “bar”。

  1. INITCAP(string)

返回一个新形式的 string,其中每个单词的第一个字符转换为大写,其余字符转换为小写。这里的单词是指一系列字母数字字符。

  1. CONCAT(string1, string2,...)

返回一个字符串,该字符串连接 string1, string2, …。如果任何一个参数为 NULL,则返回 NULL。例如 CONCAT('AA', 'BB', 'CC') 返回 “AABBCC”。

  1. CONCAT_WS(string1, string2, string3,...)

返回一个字符串,该字符串是用分隔符 string1 连接的 string2, string3, … 。分隔符被添加到要连接的字符串之间。如果 string1 为空,则返回 NULL。与 CONCAT() 相比,CONCAT_WS() 会自动跳过空参数。例如 CONCAT_WS('~', 'AA', NULL, 'BB', '', 'CC') 返回 “AA~BB~~CC”。

  1. LPAD(string1, integer, string2)

返回一个新的字符串,从 string1 左边填充 string2integer 个字符的长度。如果 string1 的长度小于 integer,则返回 string1 缩短为 integer 的字符.例如 LPAD('hi',4,'??') 返回 “??hi”; LPAD('hi',1,'??') 返回 “h”。

  1. RPAD(string1, integer, string2)

返回一个新的字符串,从 string1 右边填充 string2integer 个字符的长度。如果 string1 的长度小于 integer,则返回 string1 缩短为 integer 的字符.例如 RPAD('hi',4,'??') 返回 “hi??”,RPAD('hi',1,'??') 返回 “h”。

  1. FROM_BASE64(string)

返回 string 的 base64 解码结果;如果 string 为空,则返回 NULL。例如 FROM_BASE64('aGVsbG8gd29ybGQ=') 返回 “hello world”。

  1. TO_BASE64(string)

| 返回 string 的 base64 编码结果;如果 string 为空,则返回NULL。例如 TO_BASE64('hello world') 返回 “aGVsbG8gd29ybGQ=”。 |

字符串函数 描述
  1. STRING1 + STRING2

返回 STRING1STRING2 的连接。

  1. STRING.charLength()

返回 STRING 中的字符数。

  1. STRING.upperCase()

返回大写的 STRING

  1. STRING.lowerCase()

返回小写的 STRING

  1. STRING1.position(STRING2)

返回 STRING2STRING1 第一次出现的位置(从1开始);如果在 STRING2 中找不到 STRING1,则返回 0。

  1. STRING1.trim(LEADING, STRING2)
  2. STRING1.trim(TRAILING, STRING2)
  3. STRING1.trim(BOTH, STRING2)
  4. STRING1.trim(BOTH)
  5. STRING1.trim()

返回一个字符串,该字符串从 STRING1 中删除开头和/或结尾字符 STRING2。默认情况下,删除了两边的空白(whitespaces)。

  1. STRING.ltrim()

返回一个字符串,该字符串从 string 中删除左边的空白。例如 ' This is a test String.'.ltrim() 返回 “This is a test String.”。

  1. STRING.rtrim()

返回一个字符串,该字符串从 string 中删除右边的空格。例如 'This is a test String. '.rtrim() 返回 “This is a test String.”。

  1. STRING.repeat(INT)

返回重复字符串 STRING INT 次的字符串。例如 'This is a test String.'.repeat(2) 返回 “This is a test String.This is a test String.”.

  1. STRING1.regexpReplace(STRING2, STRING3)

返回 STRING1 中的一个字符串,其中所有与正则表达式 STRING2 匹配的子字符串连续被 STRING3 替换。例如 'foobar'.regexpReplace('oo|ar', '') 返回 “fb”。

  1. STRING1.overlay(STRING2, INT1)
  2. STRING1.overlay(STRING2, INT1, INT2)

返回一个字符串,该字符串将 STRING1 的从位置 INT1 开始的 INT2 (默认情况下是 STRING2 的长度)长度的字符替换为 STRING2 。例如 'xxxxxtest'.overlay('xxxx', 6) 返回 “xxxxxxxxx”; 'xxxxxtest'.overlay('xxxx', 6, 2) 返回 “xxxxxxxxxst”。

  1. STRING.substring(INT1)
  2. STRING.substring(INT1, INT2)

返回一个 STRING 的子字符串,从位置 INT1 开始,长度 INT2 (默认情况下到末尾)。

  1. STRING1.replace(STRING2, STRING3)

返回一个新字符串,它用 string1 中的 STRING3 (非重叠)替换所有出现 STRING2 的字符串。例如 'hello world'.replace('world', 'flink') 返回 ‘hello flink’; 'ababab'.replace('abab', 'z') 返回 ‘zab’。

  1. STRING1.regexpExtract(STRING2[, INTEGER1])

返回一个来自 STRING1 的字符串,该字符串由指定的正则表达式 STRING2 和正则表达式匹配组索引 INTEGER1 提取。注意: regex匹配组索引从1开始,0表示匹配整个regex。此外,regex匹配组索引不应超过已定义组的数目。例如 'foothebar'.regexpExtract('foo(.*?)(bar)', 2)" 返回 “bar”。

  1. STRING.initCap()

返回一个新形式的 STRING,其中每个单词的第一个字符转换为大写,其余字符转换为小写。这里的单词是指一系列字母数字字符。

  1. concat(STRING1, STRING2, ...)

返回一个字符串,该字符串连接 STRING1, STRING2, …。如果参数为空,则返回 NULL。例如 concat('AA', 'BB', 'CC') 返回 “AABBCC”。

  1. concat_ws(STRING1, STRING2, STRING3, ...)

返回一个字符串,该字符串用分隔符 STRING1 连接 STRING2, STRING3, … 。分隔符被添加到要连接的字符串之间。如果 STRING1 为 NULL,则返回 NULL。与 concat() 相比,concat_ws() 会自动跳过空参数。例如 concat_ws('~', 'AA', Null(STRING), 'BB', '', 'CC') 返回 “AA~BB~~CC”。

  1. STRING1.lpad(INT, STRING2)

从用 STRING2 左填充的 STRING1 返回一个长度为 INT 字符的新字符串。如果 STRING1 的长度小于 INT ,则返回 STRING1 缩短为 INT 个的字符.例如 'hi'.lpad(4, '??') 返回 “??hi”; 'hi'.lpad(1, '??') 返回 “h”。

  1. STRING1.rpad(INT, STRING2)

从用 STRING2 右填充的 STRING1 返回一个长度为 INT 字符的新字符串。如果 STRING1 的长度小于INT,则返回 STRING1 缩短为 INT 个的字符.例如 'hi'.rpad(4, '??') 返回 “hi??”;'hi'.rpad(1, '??') 返回 “h”。

  1. STRING.fromBase64()

返回 STRING 的 base64 解码结果;如果 STRING 为空,则返回 NULL。例如 'aGVsbG8gd29ybGQ='.fromBase64() 返回 “hello world”。

  1. STRING.toBase64()

| 返回 STRING 的 base64 编码结果;如果 STRING 为空,则返回 NULL。例如 'hello world'.toBase64() 返回 “aGVsbG8gd29ybGQ=”。 |

字符串函数 描述
  1. STRING1 + STRING2

返回 STRING1STRING2 的连接。

  1. STRING.charLength()

返回 STRING 中的字符数。

  1. STRING.upperCase()

返回大写的 STRING

  1. STRING.lowerCase()

返回小写的 STRING

  1. STRING1.position(STRING2)

返回 STRING2STRING1 第一次出现的位置(从1开始);如果在 STRING2 中找不到 STRING1,则返回0。

  1. STRING.trim(
  2. leading = true,
  3. trailing = true,
  4. character = " ")

返回一个字符串,该字符串从 STRING 中删除开头和/或结尾字符。

  1. STRING.ltrim()

返回一个字符串,该字符串从 string 中删除左边的空格。例如 " This is a test String.".ltrim() 返回 “This is a test String.”。

  1. STRING.rtrim()

返回一个字符串,该字符串从 string 中删除右边的空格。例如 "This is a test String. ".rtrim() 返回 “This is a test String.”。

  1. STRING.repeat(INT)

返回重复字符串 STRING INT 次的字符串。例如 'This is a test String.'.repeat(2) 返回 “This is a test String.This is a test String.”.

  1. STRING1.regexpReplace(STRING2, STRING3)

返回 STRING1 中的一个字符串,其中所有与正则表达式 STRING2 匹配的子字符串连续被 STRING3 替换。例如 'foobar'.regexpReplace('oo|ar', '') 返回 “fb”。

  1. STRING1.overlay(STRING2, INT1)
  2. STRING1.overlay(STRING2, INT1, INT2)

返回一个字符串,该字符串将 STRING1 的从位置 INT1 开始的 INT2 (默认情况下是 STRING2 的长度)长度的字符替换为 STRING2 。例如 'xxxxxtest'.overlay('xxxx', 6) 返回 “xxxxxxxxx”; 'xxxxxtest'.overlay('xxxx', 6, 2) 返回 “xxxxxxxxxst”。

  1. STRING.substring(INT1)
  2. STRING.substring(INT1, INT2)

返回一个 STRING 的子字符串,从位置 INT1 开始,长度 INT2 (默认情况下到末尾)。

  1. STRING1.replace(STRING2, STRING3)

返回一个新字符串,它用 string1 中的 STRING3 (非重叠)替换所有出现 STRING2 的字符串。例如 'hello world'.replace('world', 'flink') 返回 ‘hello flink’; 'ababab'.replace('abab', 'z') 返回 ‘zab’。

  1. STRING1.regexpExtract(STRING2[, INTEGER1])

返回一个来自 STRING1 的字符串,该字符串由指定的正则表达式 STRING2 和正则表达式匹配组索引 INTEGER1 提取。注意: regex匹配组索引从1开始,0表示匹配整个regex。此外,regex匹配组索引不应超过已定义组的数目。例如 'foothebar'.regexpExtract('foo(.*?)(bar)', 2)" 返回 “bar”。

  1. STRING.initCap()

返回一个新形式的 STRING,其中每个单词的第一个字符转换为大写,其余字符转换为小写。这里的单词是指一系列字母数字字符。

  1. concat(STRING1, STRING2, ...)

返回一个字符串,该字符串连接 STRING1, STRING2, …。如果参数为空,则返回 NULL。例如 concat("AA", "BB", "CC") 返回 “AABBCC”。

  1. concat_ws(STRING1, STRING2, STRING3, ...)

返回一个字符串,该字符串用分隔符 STRING1 连接 STRING2, STRING3, … 。分隔符被添加到要连接的字符串之间。如果 STRING1 为 NULL,则返回 NULL。与 concat() 相比,concat_ws() 会自动跳过空参数。例如 concat_ws('~', 'AA', Null(STRING), 'BB', '', 'CC') 返回 “AA~BB~~CC”。

  1. STRING1.lpad(INT, STRING2)

从用 STRING2 左填充的 STRING1 返回一个长度为 INT 字符的新字符串。如果 STRING1 的长度小于 INT ,则返回 STRING1 缩短为 INT 个的字符.例如 'hi'.lpad(4, '??') 返回 “??hi”; 'hi'.lpad(1, '??') 返回 “h”。

  1. STRING1.rpad(INT, STRING2)

从用 STRING2 右填充的 STRING1 返回一个长度为 INT 字符的新字符串。如果 STRING1 的长度小于INT,则返回 STRING1 缩短为 INT 个的字符.例如 'hi'.rpad(4, '??') 返回 “hi??”;'hi'.rpad(1, '??') 返回 “h”。

  1. STRING.fromBase64()

返回 STRING 的 base64 解码结果;如果 STRING 为空,则返回 null。例如 "aGVsbG8gd29ybGQ=".fromBase64() 返回 “hello world”。

  1. STRING.toBase64()

| 返回 STRING 的 base64 编码结果;如果 STRING 为空,则返回 NULL。例如 "hello world".toBase64() 返回 “aGVsbG8gd29ybGQ=”。 |

时间函数(Temporal Functions)

时间函数 描述
  1. DATE string

以 “yyyy-MM-dd” 的形式返回从 string 解析的 SQL 日期。

  1. TIME string

以 “HH:mm:ss” 的形式返回从 string 解析的 SQL 时间。

  1. TIMESTAMP string

以 “yyyy-MM-dd HH:mm:ss[.SSS]” 的形式返回从 string 解析的 SQL 时间戳。

  1. INTERVAL string range

对于SQL间隔(intervals)为毫秒,以 “dd hh:mm:ss.fff” 形式解析间隔 string,对于SQL间隔月,以 “yyyy-mm”形式解析。毫秒的间隔范围可以是 DAY, MINUTE, DAY TO HOURDAY TO SECOND; 月的间隔可以是 YEARYEAR TO MONTH。例如 INTERVAL '10 00:00:00.004' DAY TO SECOND, INTERVAL '10' DAYINTERVAL '2-10' YEAR TO MONTH 返回间隔。

  1. CURRENT_DATE

返回 UTC 时区中的当前 SQL 日期。

  1. CURRENT_TIME

返回 UTC 时区中的当前SQL时间。

  1. CURRENT_TIMESTAMP

返回 UTC 时区中的当前 SQL 时间戳。

  1. LOCALTIME

返回本地时区中的当前 SQL 时间。

  1. LOCALTIMESTAMP

返回本地时区中的当前 SQL 时间戳。

  1. EXTRACT(timeintervalunit FROM temporal)

返回从 temporaltimeintervalunit 部分提取的 long 值。例如 EXTRACT(DAY FROM DATE '2006-06-05') 返回 5。

  1. YEAR(date)

从 SQL date date 返回年份。相当于 EXTRACT(YEAR FROM date)。例如 YEAR(DATE '1994-09-27') 返回 1994。

  1. QUARTER(date)

从SQL date date 返回一个季度(1到4之间的整数)。相当于 EXTRACT(QUARTER FROM date)。例如 QUARTER(DATE '1994-09-27') 返回 3。

  1. MONTH(date)

从SQL date date 返回一年中的月份(1到12之间的整数)。相当于 EXTRACT(MONTH FROM date)。例如 MONTH(DATE '1994-09-27') 返回 9。

  1. WEEK(date)

从SQL date date 返回一年中的星期(1到53之间的整数)。相当于 EXTRACT(WEEK FROM date)。例如 WEEK(DATE '1994-09-27') 返回 39。

  1. DAYOFYEAR(date)

从SQL date date 返回一年中的日期(1到366之间的整数)。相当于 EXTRACT(DOY FROM date)。例如 DAYOFYEAR(DATE '1994-09-27') 返回 270。

  1. DAYOFMONTH(date)

从SQL date date 返回一个月的日期(1到31之间的整数)。相当于 EXTRACT(DAY FROM date)。例如 DAYOFMONTH(DATE '1994-09-27') 返回 27。

  1. DAYOFWEEK(date)

从SQL date date 返回星期几(1到7之间的整数;Sunday = 1)。相当于 EXTRACT(DOW FROM date)。例如 DAYOFWEEK(DATE '1994-09-27') 返回 3。

  1. HOUR(timestamp)

从SQL timestamp timestamp 返回一天中的小时(0到23之间的整数)。相当于 EXTRACT(HOUR FROM timestamp)。例如 HOUR(TIMESTAMP '1994-09-27 13:14:15') 返回 13。

  1. MINUTE(timestamp)

从SQL timestamp timestamp 返回一小时的分钟(0到59之间的整数)。相当于 EXTRACT(MINUTE FROM timestamp)。例如 MINUTE(TIMESTAMP '1994-09-27 13:14:15') 返回 14。

  1. SECOND(timestamp)

从 SQL 时间戳返回一分钟的秒(0到59之间的整数)。相当于 EXTRACT(SECOND FROM timestamp)。例如 SECOND(TIMESTAMP '1994-09-27 13:14:15') 返回 15。

  1. FLOOR(timepoint TO timeintervalunit)

返回将 timepoint 向下舍入为时间单位 timeintervalunit 的值。例如 FLOOR(TIME '12:44:31' TO MINUTE) 返回 12:44:00。

  1. CEIL(timepoint TO timeintervalunit)

返回将 timepoint 向上舍入到时间单位 timeintervalunit 的值。例如 CEIL(TIME '12:44:31' TO MINUTE) 返回 12:45:00。

  1. (timepoint1, temporal1) OVERLAPS (timepoint2, temporal2)

如果(timepoint1temporal1)和(timepoint2temporal2)定义的两个时间间隔重叠,则返回 TRUE。时间值可以是一个时间点,也可以是一个时间间隔。例如 (TIME '2:55:00', INTERVAL '1' HOUR) OVERLAPS (TIME '3:30:00', INTERVAL '2' HOUR) 返回 TRUE; (TIME '9:00:00', TIME '10:00:00') OVERLAPS (TIME '10:15:00', INTERVAL '3' HOUR) 返回FALSE。

  1. DATE_FORMAT(timestamp, string)

注意,这个函数有严重的bug,目前不应该使用。请实现自定义 UDF,或者使用 EXTRACT 作为解决方案。

  1. TIMESTAMPADD(timeintervalunit, interval, timepoint)

返回一个新的时间值,该值将一个(带符号的)整数区间添加到 timepointinterval 的单位由单位参数提供,该参数应该是以下值之一: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTERYEAR。例如 TIMESTAMPADD(WEEK, 1, DATE '2003-01-02') 返回 2003-01-09

  1. TIMESTAMPDIFF(timepointunit, timepoint1, timepoint2)

| 返回 timepoint1timepoint2 之间 timepointunit 的(带符号)编号。间隔的单位由第一个参数给出,该参数应该是以下值之一:SECONDMINUTEHOURDAYMONTHYEAR。另请参见时间间隔和点单位说明符表。例如 TIMESTAMPDIFF(DAY, TIMESTAMP '2003-01-02 10:00:00', TIMESTAMP '2003-01-03 10:00:00') 返回 1。 |

时间函数 描述
  1. STRING.toDate()

以 “yyyy-MM-dd” 的形式返回从 STRING 解析的 SQL 日期。

  1. STRING.toTime()

以 “HH:mm:ss” 的形式返回从 STRING 解析的 SQL 时间。

  1. STRING.toTimestamp()

以 “yyyy-MM-dd HH:mm:ss[.SSS]” 的形式返回从 STRING 解析的 SQL 时间戳。

  1. NUMERIC.year
  2. NUMERIC.years

NUMERIC 年创建月份间隔。

  1. NUMERIC.quarter
  2. NUMERIC.quarters

NUMERIC 季度创建月份间隔。例如 2.quarters 返回6。

  1. NUMERIC.month
  2. NUMERIC.months

创建 NUMERIC 月的间隔。

  1. NUMERIC.week
  2. NUMERIC.weeks

NUMERIC 周创建一个毫秒的间隔。例如 2.weeks 返回 1209600000。

  1. NUMERIC.day
  2. NUMERIC.days

NUMERIC 天创建毫秒间隔。

  1. NUMERIC.hour
  2. NUMERIC.hours

NUMERIC 小时创建毫秒间隔。

  1. NUMERIC.minute
  2. NUMERIC.minutes

NUMERIC 分钟创建毫秒间隔。

  1. NUMERIC.second
  2. NUMERIC.seconds

NUMERIC 秒创建毫秒间隔。

  1. NUMERIC.milli
  2. NUMERIC.millis

创建 NUMERIC 毫秒的间隔。

  1. currentDate()

返回 UTC 时区中的当前 SQL 日期。

  1. currentTime()

返回 UTC 时区中的当前 SQL 时间。

  1. currentTimestamp()

返回 UTC 时区中的当前 SQL 时间戳。

  1. localTime()

返回本地时区中的当前 SQL 时间。

  1. localTimestamp()

返回本地时区中的当前 SQL 时间戳。

  1. TEMPORAL.extract(TIMEINTERVALUNIT)

返回从 temporalTIMEINTERVALUNIT 部分提取的 long 值。例如 '2006-06-05'.toDate.extract(DAY) 返回 5;'2006-06-05'.toDate.extract(QUARTER) 返回 2。

  1. TIMEPOINT.floor(TIMEINTERVALUNIT)

返回将 TIMEPOINT 向下舍入为时间单位 TIMEINTERVALUNIT 的值。例如 '12:44:31'.toDate.floor(MINUTE) 返回 12:44:00

  1. TIMEPOINT.ceil(TIMEINTERVALUNIT)

返回将 TIMEPOINT 向上舍入为时间单位 TIMEINTERVALUNIT 的值。例如 '12:44:31'.toDate.ceil(MINUTE) 返回 12:45:00。

  1. temporalOverlaps(TIMEPOINT1, TEMPORAL1, TIMEPOINT2, TEMPORAL2)

如果(TIMEPOINT1, TEMPORAL1)和(TIMEPOINT2, TEMPORAL2)定义的两个时间间隔重叠,则返回 TRUE。时间值可以是一个时间点,也可以是一个时间间隔。例如 temporalOverlaps('2:55:00'.toTime, 1.hour, '3:30:00'.toTime, 2.hour) 返回 TRUE。

  1. dateFormat(TIMESTAMP, STRING)

注意,这个函数有严重的bug,目前不应该使用。请实现自定义UDF,或者使用extract()作为解决方案。

  1. timestampDiff(TIMEPOINTUNIT, TIMEPOINT1, TIMEPOINT2)

| 返回 TIMEPOINT1TIMEPOINT2 之间 TIMEPOINTUNIT 的(带符号的)编号。区间的单位由第一个参数给出,该参数应该是以下值之一:SECOND, MINUTE, HOUR, DAY, MONTHYEAR。参见时间间隔和点单位说明符表。例如 timestampDiff(DAY, '2003-01-02 10:00:00'.toTimestamp, '2003-01-03 10:00:00'.toTimestamp) 返回 1。 |

时间函数 描述
  1. STRING.toDate

以 “yyyy-MM-dd” 的形式返回从 STRING 解析的 SQL 日期。

  1. STRING.toTime

以 “HH:mm:ss” 的形式返回从 STRING 解析的 SQL 时间。

  1. STRING.toTimestamp

以 “yyyy-MM-dd HH:mm:ss[.SSS]” 的形式返回从 STRING 解析的 SQL 时间戳。

  1. NUMERIC.year
  2. NUMERIC.years

NUMERIC 年创建月间隔。

  1. NUMERIC.quarter
  2. NUMERIC.quarters

NUMERIC 季度创建月间隔。例如 2.quarters 返回 6。

  1. NUMERIC.month
  2. NUMERIC.months

创建 NUMERIC 月的间隔。

  1. NUMERIC.week
  2. NUMERIC.weeks

NUMERIC 周创建毫秒间隔。例如 2.weeks 返回 1209600000。

  1. NUMERIC.day
  2. NUMERIC.days

NUMERIC 天创建毫秒间隔。

  1. NUMERIC.hour
  2. NUMERIC.hours

NUMERIC 小时创建毫秒间隔。

  1. NUMERIC.minute
  2. NUMERIC.minutes

NUMERIC 分钟创建毫秒间隔。

  1. NUMERIC.second
  2. NUMERIC.seconds

NUMERIC 秒创建毫秒间隔。

  1. NUMERIC.milli
  2. NUMERIC.millis

创建 NUMERIC 毫秒的间隔。

  1. currentDate()

返回 UTC 时区中的当前 SQL 日期。

  1. currentTime()

返回 UTC 时区中的当前 SQL 时间。

  1. currentTimestamp()

返回 UTC 时区中的当前 SQL 时间戳。

  1. localTime()

返回本地时区中的当前 SQL 时间。

  1. localTimestamp()

返回本地时区中的当前 SQL 时间戳。

  1. TEMPORAL.extract(TIMEINTERVALUNIT)

返回从 temporalTIMEINTERVALUNIT 部分提取的 long 值。例如 "2006-06-05".toDate.extract(TimeIntervalUnit.DAY) 返回 5;"2006-06-05".toDate.extract(QUARTER) 返回 2。

  1. TIMEPOINT.floor(TIMEINTERVALUNIT)

返回将 TIMEPOINT 向下舍入为时间单位 TIMEINTERVALUNIT 的值。例如 "12:44:31".toDate.floor(TimeIntervalUnit.MINUTE) 返回 12:44:00。

  1. TIMEPOINT.ceil(TIMEINTERVALUNIT)

返回将 TIMEPOINT 向上舍入为时间单位 TIMEINTERVALUNIT 的值。例如 "12:44:31".toDate.ceil(TimeIntervalUnit.MINUTE) 返回 12:45:00。

  1. temporalOverlaps(TIMEPOINT1, TEMPORAL1, TIMEPOINT2, TEMPORAL2)

如果(TIMEPOINT1, TEMPORAL1)和(TIMEPOINT2, TEMPORAL2)定义的两个时间间隔重叠,则返回 TRUE。时间值可以是一个时间点,也可以是一个时间间隔。例如 temporalOverlaps("2:55:00".toTime, 1.hour, "3:30:00".toTime, 2.hour) 返回 TRUE。

  1. dateFormat(TIMESTAMP, STRING)

注意,这个函数有严重的bug,目前不应该使用。请实现自定义UDF,或者使用extract()作为解决方案。

  1. timestampDiff(TIMEPOINTUNIT, TIMEPOINT1, TIMEPOINT2)

| 返回 TIMEPOINT1TIMEPOINT2 之间 TIMEPOINTUNIT 的(带符号)编号。区间的单位由第一个参数给出,该参数应该是以下值之一:SECOND, MINUTE, HOUR, DAY, MONTHYEAR。参见时间间隔和点单位说明符表。例如 timestampDiff(TimePointUnit.DAY, '2003-01-02 10:00:00'.toTimestamp, '2003-01-03 10:00:00'.toTimestamp) 返回 1。 |

条件函数(Conditional Functions)

条件函数 描述
  1. CASE value
  2. WHEN value1_1 [, value1_2 ]* THEN result1
  3. [ WHEN value2_1 [, value2_2 ]* THEN result2 ]*
  4. [ ELSE resultZ ]
  5. END

value 第一次包含在(valueX_1, valueX_2, …)时返回 resultX。如果没有值匹配,则返回 resultZ(如果已提供),否则返回NULL。

  1. CASE
  2. WHEN condition1 THEN result1
  3. [ WHEN condition2 THEN result2 ]*
  4. [ ELSE resultZ ]
  5. END

满足第一个 conditionX 时返回 resultX。如果没有满足条件,则返回 resultZ(如果已提供),否则返回 NULL。

  1. NULLIF(value1, value2)

如果 value1 等于 value2,则返回 NULL; 否则返回 value1。例如 NULLIF(5, 5) 返回 NULL; NULLIF(5, 0) 返回 5。

  1. COALESCE(value1, value2 [, value3 ]* )

| 从 value1, value2, … 返回非 NULL 的第一个值。例如 COALESCE(NULL, 5) 返回 5。 |

条件函数 描述
  1. BOOLEAN.?(VALUE1, VALUE2)

| 如果 BOOLEAN 的计算结果为 TRUE,则返回 VALUE1; 否则返回 VALUE2。例如 (42 > 5).?('A', 'B') 返回 “A”。 |

条件函数 描述
  1. BOOLEAN.?(VALUE1, VALUE2)

| 如果 BOOLEAN 的计算结果为 TRUE,则返回 VALUE1; 否则返回 VALUE2。例如 (42 > 5).?("A", "B") 返回 “A”。 |

类型转换函数(Type Conversion Functions)

类型转换函数 描述
  1. CAST(value AS type)

| 返回一个新的 value 被强制转换为 type 类型。查看支持的类型此处。例如 CAST('42' AS INT) 返回 42;CAST(NULL AS VARCHAR) 返回 VARCHAR 类型的 NULL。 |

类型转换函数 描述
  1. ANY.cast(TYPE)

| 返回一个新的 ANY 被强制转换为类型 TYPE。 查看支持的类型[此处]tableApi.html#data-types)。例如 '42'.cast(INT) 返回 42;Null(STRING) 返回 返回 STRING 类型的 NULL。 |

类型转换函数 描述
  1. ANY.cast(TYPE)

| 返回一个新的 ANY 被强制转换为类型 TYPE。查看支持的类型此处。例如 "42".cast(Types.INT) 返回 42;Null(Types.STRING) 返回 STRING 类型的 NULL。 |

集合函数(Collection Functions)

集合函数 描述
  1. CARDINALITY(array)

返回 array 中的元素数量。

  1. array ‘[’ integer ‘]’

返回 arrayinteger 位置的元素。索引从1开始。

  1. ELEMENT(array)

返回 array 的唯一元素(基数应为1); 如果 array 为空,则返回 NULL。如果 array 有多个元素,则抛出异常。

  1. CARDINALITY(map)

返回 map 中的条目数。

  1. map ‘[’ value ‘]’

| 返回 map 中 key value 指定的值。 |

集合函数 描述
  1. ARRAY.cardinality()

返回 ARRAY 中的元素数量。

  1. ARRAY.at(INT)

返回 ARRAYINT 位置的元素。索引从1开始。

  1. ARRAY.element()

返回 ARRAY 的唯一元素(基数应为1); 如果 ARRAY 为空,则返回 NULL。如果 ARRAY 有多个元素,则抛出异常。

  1. MAP.cardinality()

返回 MAP 中的条目数。

  1. MAP.at(ANY)

| 返回 MAP 中 key ANY 指定的值。 |

集合函数 描述
  1. ARRAY.cardinality()

返回 ARRAY 中的元素数量。

  1. ARRAY.at(INT)

返回 ARRAYINT 位置的元素。索引从1开始。

  1. ARRAY.element()

返回 ARRAY 的唯一元素(基数应为1); 如果 ARRAY 为空,则返回 NULL。如果 ARRAY 有多个元素,则抛出异常。

  1. MAP.cardinality()

返回 MAP 中的条目数。

  1. MAP.at(ANY)

| 返回 MAP 中 key ANY 指定的值。 |

Value 构建函数(Value Construction Functions)

Value 构建函数 描述
  1. ROW(value1, [, value2]*)
  2. (value1, [, value2]*)

返回从值(values)列表(value1, value2,…)创建的行。

  1. ARRAY ‘[’ value1 [, value2 ]* ‘]’

返回从值(values)列表(value1, value2, …)创建的数组。

  1. MAP ‘[’ value1, value2 [, value3, value4 ]* ‘]’

| 返回从键值对(key-value pairs)列表((value1, value2), (value3, value4), …)创建的映射(map)。 |

Value 构建函数 描述
  1. row(ANY1, ANY2, ...)

返回从对象值列表(ANY1, ANY2, …)创建的行。行是复合类型,可以通过值访问函数访问。

  1. array(ANY1, ANY2, ...)

返回从对象值列表(ANY1, ANY2, …)创建的数组。

  1. map(ANY1, ANY2, ANY3, ANY4, ...)

返回从键值对列表((ANY1, ANY2), (ANY3, ANY4), …)创建的映射(map)。

  1. NUMERIC.rows

| 创建 NUMERIC 行间隔(通常用于创建窗口)。 |

Value 构建函数 描述
  1. row(ANY1, ANY2, ...)

返回从对象值列表(ANY1, ANY2, …)创建的行。行是复合类型,可以通过值访问函数访问。

  1. array(ANY1, ANY2, ...)

返回从对象值列表(ANY1, ANY2, …)创建的数组。

  1. map(ANY1, ANY2, ANY3, ANY4, ...)

返回从键值对列表((ANY1, ANY2), (ANY3, ANY4), …)创建的映射(map)。

  1. NUMERIC.rows

| 创建 NUMERIC 行间隔(通常用于创建窗口)。 |

Value 访问函数(Value Access Functions)

Value 访问函数 描述
  1. tableName.compositeType.field

按名称返回 Flink 复合类型(例如 Tuple, POJO)中字段的值

  1. tableName.compositeType.*

| 返回 Flink 复合类型(例如 Tuple,POJO)的平面表示,该复合类型将其每个直接子类型转换为单独的字段。在大多数情况下,平面表示的字段的命名方式与原始字段类似,但使用美元分隔符(例如 mypojo$mytuple$f0)。 |

Value 访问函数 描述
  1. COMPOSITE.get(STRING)
  2. COMPOSITE.get(INT)

通过名称或索引返回 Flink 复合类型(例如 Tuple, POJO)中的字段的值。例如 pojo.get('myField')tuple.get(0)

  1. ANY.flatten()

| 返回 Flink 复合类型(例如Tuple, POJO)的平面表示,该复合类型将其每个直接子类型转换为单独的字段。在大多数情况下,平面表示的字段的命名方式与原始字段类似,但使用美元分隔符(例如 mypojo$mytuple$f0) |

Value access functions Description
  1. COMPOSITE.get(STRING)
  2. COMPOSITE.get(INT)

通过名称或索引返回 Flink 复合类型(例如 Tuple, POJO)中的字段的值。例如 pojo.get('myField')tuple.get(0)

  1. ANY.flatten()

| 返回 Flink 复合类型(例如Tuple, POJO)的平面表示,该复合类型将其每个直接子类型转换为单独的字段。在大多数情况下,平面表示的字段的命名方式与原始字段类似,但使用美元分隔符(例如 mypojo$mytuple$f0) |

分组函数(Grouping Functions)

分组函数 描述
  1. GROUP_ID()

返回唯一标识分组键组合的整数。

  1. GROUPING(expression1 [, expression2]* )
  2. GROUPING_ID(expression1 [, expression2]* )

| 返回给定分组表达式的位向量。 |

分组函数 描述
分组函数 描述

Hash 函数(Hash Functions)

Hash 函数 描述
  1. MD5(string)

以 32 个十六进制数字的字符串返回 string 的 MD5 哈希值;如果 string 为 NULL,则返回NULL。

  1. SHA1(string)

以 40 个十六进制数字的字符串返回 string 的 SHA-1 哈希值;如果 string 为 NULL,则返回 NULL。

  1. SHA224(string)

以 56 个十六进制数字的字符串返回 string 的 SHA-224 哈希值;如果 string 为 NULL,则返回NULL。

  1. SHA256(string)

以 64 个十六进制数字的字符串返回 string 的 SHA-256 哈希值;如果 string 为 NULL,则返回 NULL。

  1. SHA384(string)

以 96 个十六进制数字的字符串返回 string 的 SHA-384 哈希值;如果 string 为 NULL,则返回 NULL。

  1. SHA512(string)

以 128 个十六进制数字的字符串返回 string 的 SHA-512 哈希值;如果 string 为 NULL,则返回 NULL。

  1. SHA2(string, hashLength)

| 使用 SHA-2 哈希函数家族(SHA-224、SHA-256、SHA-384或SHA-512)返回哈希。第一个参数 string 是要散列的字符串,第二个参数 hashLength 是结果的位长(224、256、384或512)。如果 stringhashLength 为空,则返回 NULL。 |

Hash 函数 描述
  1. STRING.md5()

以 32 个十六进制数字的字符串返回 STRING 的 MD5 哈希值;如果 STRING 为 NULL,则返回 NULL。

  1. STRING.sha1()

以 40 个十六进制数字的字符串返回 STRING 的 SHA-1 哈希值;如果 STRING 为 NULL,则返回 NULL。

  1. STRING.sha224()

以 56 个十六进制数字的字符串返回 STRING 的 SHA-224 哈希值;如果 STRING 为 NULL,则返回 NULL。

  1. STRING.sha256()

以 64 个十六进制数字的字符串返回 STRING 的 SHA-256 哈希值;如果 STRING 为 NULL,则返回 NULL。

  1. STRING.sha384()

以 96 个十六进制数字的字符串返回 STRING 的 SHA-384 哈希值;如果 STRING 为 NULL,则返回 NULL。

  1. STRING.sha512()

以 128 个十六进制数字的字符串返回 STRING 的 SHA-512 哈希值;如果 STRING 为 NULL,则返回 NULL。

  1. STRING.sha2(INT)

| 返回 INT (可以是224、256、384或512)为 STRING 指定的 SHA-2 族(SHA-224、SHA-256、SHA-384或SHA-512)散列值。如果 STRINGINT 为 NULL,则返回 NULL。 |

Hash 函数 描述
  1. STRING.md5()

以 32 个十六进制数字的字符串返回 STRING 的 MD5 散列值;如果 STRING 为 NULL,则返回 NULL。

  1. STRING.sha1()

以 40 个十六进制数字的字符串返回 STRING 的 SHA-1 散列值;如果 STRING 为 NULL,则返回 NULL。

  1. STRING.sha224()

以 56 个十六进制数字的字符串返回 STRING 的 SHA-224 散列值;如果 STRING 为 NULL,则返回 NULL。

  1. STRING.sha256()

以 64 个十六进制数字的字符串返回 STRING 的 SHA-256 散列值;如果 STRING 为 NULL,则返回 NULL。

  1. STRING.sha384()

以 96 个十六进制数字的字符串返回 STRING 的 SHA-384 散列值;如果 STRING 为 NULL,则返回 NULL。

  1. STRING.sha512()

以 128 个十六进制数字的字符串返回 STRING 的 SHA-512 散列;如果 STRING 为 NULL,则返回 NULL。

  1. STRING.sha2(INT)

| 返回 INT (可以是224、256、384或512)为 STRING 指定的 SHA-2族(SHA-224、SHA-256、SHA-384或SHA-512)散列值。如果 STRINGINT 为空,则返回 NULL。 |

辅助函数(Auxiliary Functions)

辅助函数 描述
辅助函数 描述
  1. ANY.as(NAME1, NAME2, ...)

| 指定 ANY(字段)的名称。如果表达式扩展到多个字段,可以指定其他名称。 |

辅助函数 描述
  1. ANY.as(NAME1, NAME2, ...)

| 指定 ANY (字段)的名称。如果表达式扩展到多个字段,可以指定其他名称。 |

聚合函数(Aggregate Functions)

聚合函数接受跨所有行的表达式作为输入,并返回单个聚合值作为结果。

聚合函数 描述
  1. COUNT([ ALL ] expression | DISTINCT expression1 [, expression2]*)

默认情况下或使用ALL,返回 expression 不为NULL的输入行数。将 DISTINCT 用于每个值的一个唯一实例。

  1. COUNT(*)
  2. COUNT(1)

返回输入行数。

  1. AVG([ ALL | DISTINCT ] expression)

默认情况下或使用关键字ALL,返回所有输入行中 expression 的平均值(算术平均值)。将 DISTINCT 用于每个值的一个唯一实例。

  1. SUM([ ALL | DISTINCT ] expression)

默认情况下或使用关键字 ALL,在所有输入行中返回 expression 的总和。将 DISTINCT 用于每个值的一个唯一实例。

  1. MAX([ ALL | DISTINCT ] expression)

默认情况下或使用关键字 ALL,在所有输入行中返回 expression 的最大值。将 DISTINCT 用于每个值的一个唯一实例。

  1. MIN([ ALL | DISTINCT ] expression)

默认情况下或使用关键字 ALL,在所有输入行中返回 expression 的最小值。将 DISTINCT 用于每个值的一个唯一实例。

  1. STDDEV_POP([ ALL | DISTINCT ] expression)

默认情况下或使用关键字 ALL,在所有输入行中返回 expression 的总体标准差。将 DISTINCT 用于每个值的一个唯一实例。

  1. STDDEV_SAMP([ ALL | DISTINCT ] expression)

默认情况下或使用关键字 ALL,在所有输入行中返回 expression 的样本标准差。将 DISTINCT 用于每个值的一个唯一实例。

  1. VAR_POP([ ALL | DISTINCT ] expression)

默认情况下或使用关键字 ALL,在所有输入行中返回 expression 的总体方差(总体标准差的平方)。将 DISTINCT 用于每个值的一个唯一实例。

  1. VAR_SAMP([ ALL | DISTINCT ] expression)

默认情况下或使用关键字 ALL,在所有输入行中返回 expression 的样本方差(样本标准差的平方)。将 DISTINCT 用于每个值的一个唯一实例。

  1. COLLECT([ ALL | DISTINCT ] expression)

| 默认情况下或使用关键字 ALL,在所有输入行中返回 expression 的多个集合。NULL 值将被忽略。将 DISTINCT 用于每个值的一个唯一实例。 |

聚合函数 描述
  1. FIELD.count

返回 FIELD 不为 NULL 的输入行数。

  1. FIELD.avg

返回所有输入行中 FIELD 的平均值(算术平均值)。

  1. FIELD.sum

返回所有输入行中数字字段 FIELD 的总和。如果所有值都为 NULL,则返回 NULL。

  1. FIELD.sum0

返回所有输入行中数字字段 FIELD 的总和。如果所有值都为 NULL,则返回 0。

  1. FIELD.max

返回所有输入行中数字字段 FIELD 的最大值。

  1. FIELD.min

返回所有输入行中数字字段 FIELD 的最小值。

  1. FIELD.stddevPop

返回所有输入行中数字字段 FIELD 的总体标准差。

  1. FIELD.stddevSamp

返回所有输入行中数字字段 FIELD 的样本标准差。

  1. FIELD.varPop

返回所有输入行中数字字段 FIELD 的总体方差(总体标准差的平方)。

  1. FIELD.varSamp

返回所有输入行中数字字段 FIELD 的样本方差(样本标准差的平方)。

  1. FIELD.collect

| 在所有输入行中返回 FIELD 的多重集(multiset)。 |

聚合函数 描述
  1. FIELD.count

返回 FIELD 不为 NULL 的输入行数。

  1. FIELD.avg

返回所有输入行中 FIELD 的平均值(算术平均值)。

  1. FIELD.sum

返回所有输入行中数字字段 FIELD 的总和。如果所有值都为 NULL,则返回 NULL。

  1. FIELD.sum0

返回所有输入行中数字字段 FIELD 的总和。如果所有值都为 NULL,则返回 0。

  1. FIELD.max

返回所有输入行中数字字段 FIELD 的最大值。

  1. FIELD.min

返回所有输入行中数字字段 FIELD 的最小值。

  1. FIELD.stddevPop

返回所有输入行中数字字段 FIELD 的总体标准差。

  1. FIELD.stddevSamp

返回所有输入行中数字字段 FIELD 的样本标准差。

  1. FIELD.varPop

返回所有输入行中数字字段 FIELD 的总体方差(总体标准差的平方)。

  1. FIELD.varSamp

返回所有输入行中数字字段 FIELD 的样本方差(样本标准差的平方)。

  1. FIELD.collect

| 在所有输入行中返回 FIELD 的多重集(multiset)。 |

日期格式说明符(Date Format Specifiers)

下表列出了日期格式函数的说明符。

说明符 描述
  1. %a

缩写的工作日名称 (Sun .. Sat)

  1. %b

缩写的月份名称(Jan .. Dec)

  1. %c

月,数字(1 .. 12)

  1. %D

带有英文后缀的月份的某天 (0th, 1st, 2nd, 3rd, …)

  1. %d

每月的某天,数字 (01 .. 31)

  1. %e

每月的某天,数字(1 .. 31)

  1. %f

秒的分数(打印6位数字:000000 .. 999000;1 - 9位数用于解析:0 .. 999999999)(时间戳被截断为毫秒。)

  1. %H

小时 (00 .. 23)

  1. %h

小时 (01 .. 12)

  1. %I

小时 (01 .. 12)

  1. %i

分钟,数字(00 .. 59)

  1. %j

一年中的一天(001 .. 366)

  1. %k

小时 (0 .. 23)

  1. %l

小时 (1 .. 12)

  1. %M

月份名称 (January .. December)

  1. %m

月,数字 (01 .. 12)

  1. %p

AMPM

  1. %r

时间,12小时 (hh:mm:ss 后跟 AM or PM)

  1. %S

秒 (00 .. 59)

  1. %s

秒 (00 .. 59)

  1. %T

时间,24小时 (hh:mm:ss)

  1. %U

周 (00 .. 53),星期日是一周的第一天

  1. %u

周(00 .. 53),星期一是一周的第一天

  1. %V

周(01 .. 53),星期日是一周的第一天; 与 %X 一起使用

  1. %v

周(01 .. 53),星期一是一周的第一天; 与 %x 一起使用

  1. %W

工作日名称 (Sunday .. Saturday)

  1. %w

星期几(0 .. 6),星期日是一周的第一天

  1. %X

一周的年份,星期一是一周的第一天,数字,四位数; 与 %V 一起使用

  1. %x

一周的年份,星期一是一周的第一天,数字,四位数; 与 %v 一起使用

  1. %Y

年份,数字,四位数

  1. %y

年份,数字(两位数)

  1. %%

文字 % 字符

  1. %x

| x,对于上面没有列出的任何 x |

时间间隔和点单位说明符(Time Interval and Point Unit Specifiers)

下表列出了时间间隔和时间点单位的说明符。

对于 Table API,请使用 _ 作为空格(例如,DAY_TO_HOUR)。

Time Interval Unit Time Point Unit
MILLENIUM (SQL-only)
CENTURY (SQL-only)
YEAR YEAR
YEAR TO MONTH
QUARTER QUARTER
MONTH MONTH
WEEK WEEK
DAY DAY
DAY TO HOUR
DAY TO MINUTE
DAY TO SECOND
HOUR HOUR
HOUR TO MINUTE
HOUR TO SECOND
MINUTE MINUTE
MINUTE TO SECOND
SECOND SECOND
MILLISECOND
MICROSECOND
DOY (SQL-only)
DOW (SQL-only)
SQL_TSI_YEAR (SQL-only)
SQL_TSI_QUARTER (SQL-only)
SQL_TSI_MONTH (SQL-only)
SQL_TSI_WEEK (SQL-only)
SQL_TSI_DAY (SQL-only)
SQL_TSI_HOUR (SQL-only)
SQL_TSI_MINUTE (SQL-only)
SQL_TSI_SECOND (SQL-only)