文档下载建议反馈入口

  • 特殊语法形式
  • 条件和类函数运算符
  • 内置函数
  • 聚合函数
  • 窗口函数

关系数据函数

数据库函数是一组预定义的操作,用于对数据执行特定的计算或转换。

特殊语法形式

为了兼容 SQL 标准和 PostgreSQL,KWDB 支持以下函数,这些函数与常规的内置函数具有等效功能。

特殊形式等价于
AT TIME ZONEtimezone()
CURRENT_CATALOGcurrent_database()
COLLATION FORpg_collation_for()
CURRENT_DATEcurrent_date()
CURRENT_ROLEcurrent_user()
CURRENT_SCHEMAcurrent_schema()
CURRENT_TIMESTAMPcurrent_timestamp()
CURRENT_TIMEcurrent_time()
CURRENT_USERcurrent_user()
EXTRACT(<part> FROM <value>)extract("<part>", <value>)
EXTRACT_DURATION(<part>FROM <value>)extract_duration("<part>",<value>)
OVERLAY(<text1> PLACING <text2> FROM <int1> FOR <int2>)overlay(<text1>,<text2>, <int1>, <int2>)
OVERLAY(<text1> PLACING <text2> FROM <int>)overlay(<text1>,<text2>, <int>)
POSITION(<text1> IN <text2>)strpos(<text2>, <text1>)
SESSION_USERcurrent_user()
SUBSTRING(<text>FOR<int1>FROM <int2>)substring(<text>,<int2>, <int1>)
SUBSTRING(<text> FOR <int>)substring(<text>, 1, <int>)
SUBSTRING(<text>FROM<int1>FOR<int2>)substring(<text>,<int1>, <int2>)
SUBSTRING(<text> FROM <int>)substring(<text>, <int>)
TRIM(<text1> FROM <text2>)btrim(<text2>, <text1>)
TRIM(<text1>, <text2>)btrim(<text1>, <text2>)
TRIM(FROM <text>)btrim(<text>)
TRIM(LEADING <text1> FROM <text2>)ltrim(<text2>, <text1>)
TRIM(LEADING FROM <text>)ltrim(<text>)
TRIM(TRAILING <text1> FROM <text2>)rtrim(<text2>, <text1>)
TRIM(TRAILING FROM <text>)rtrim(<text>)
USERcurrent_user()

条件和类函数运算符

下表列出具有特殊评估规则的运算符。

运算符描述
ANNOTATE_TYPE(...)显式输入表达式
ARRAY(...)子查询结果转换为数组
ARRAY[...]将标量表达式转换为数组
CAST(...)类型转换
COALESCE(...)第一个非 NULL 短路表达式
EXISTS(...)子查询结果的存在性检验
IF(...)条件评估
IFNULL(...)COALESCE 限制为两个操作数的别名
NULLIF(...)NULL 有条件地返回
ROW(...)元组构造函数

内置函数

数组函数

函数 → 返回值描述
array_append(array: bool[], elem: bool) → bool[]向数组增加新的元素,返回其结果。
array_append(array: bytes[], elem: bytes) → bytes[]向数组增加新的元素,返回其结果。
array_append(array: date[], elem: date) → date[]向数组增加新的元素,返回其结果。
array_append(array: decimal[], elem: decimal) → decimal[]向数组增加新的元素,返回其结果。
array_append(array: float4[], elem: float4) → float4[]向数组增加新的元素,返回其结果。
array_append(array: float8[], elem: float8) → float8[]向数组增加新的元素,返回其结果。
array_append(array: inet[], elem: inet) → inet[]向数组增加新的元素,返回其结果。
array_append(array: int2[], elem: int2) → int8[]向数组增加新的元素,返回其结果。
array_append(array: int2[], elem: int4) → int8[]向数组增加新的元素,返回其结果。
array_append(array: int2[], elem: int8) → int8[]向数组增加新的元素,返回其结果。
array_append(array: int4[], elem: int2) → int8[]向数组增加新的元素,返回其结果。
array_append(array: int4[], elem: int4) → int8[]向数组增加新的元素,返回其结果。
array_append(array: int4[], elem: int8) → int8[]向数组增加新的元素,返回其结果。
array_append(array: int8[], elem: int2) → int8[]向数组增加新的元素,返回其结果。
array_append(array: int8[], elem: int4) → int8[]向数组增加新的元素,返回其结果。
array_append(array: int8[], elem: int8) → int8[]向数组增加新的元素,返回其结果。
array_append(array: interval[], elem: interval) → interval[]向数组增加新的元素,返回其结果。
array_append(array: string[], elem: string) → string[]向数组增加新的元素,返回其结果。
array_append(array: time[], elem: time) → time[]向数组增加新的元素,返回其结果。
array_append(array: timestamp[], elem: timestamp) → timestamp[]向数组增加新的元素,返回其结果。
array_append(array: timestamptz[], elem: timestamptz) → timestamptz[]向数组增加新的元素,返回其结果。
array_append(array: uuid[], elem: uuid) → uuid[]向数组增加新的元素,返回其结果。
array_append(array: oid[], elem: oid) → oid[]向数组增加新的元素,返回其结果。
array_append(array: timetz[], elem: timetz) → timetz[]向数组增加新的元素,返回其结果。
array_append(array: varbit[], elem: varbit) → varbit[]向数组增加新的元素,返回其结果。
array_cat(left: bool[], right: bool[]) → bool[]连接两个数组。
array_cat(left: bytes[], right: bytes[]) → bytes[]连接两个数组。
array_cat(left: date[], right: date[]) → date[]连接两个数组。
array_cat(left: decimal[], right: decimal[]) → decimal[]连接两个数组。
array_cat(left: float4[], right: float4[]) → float8[]连接两个数组。
array_cat(left: float4[], right: float8[]) → float8[]连接两个数组。
array_cat(left: float8[], right: float4[]) → float8[]连接两个数组。
array_cat(left: float8[], right: float8[]) → float8[]连接两个数组。
array_cat(left: inet[], right: inet[]) → inet[]连接两个数组。
array_cat(left: int2[], right: int2[]) → int8[]连接两个数组。
array_cat(left: int2[], right: int4[]) → int8[]连接两个数组。
array_cat(left: int2[], right: int8[]) → int8[]连接两个数组。
array_cat(left: int4[], right: int2[]) → int8[]连接两个数组。
array_cat(left: int4[], right: int4[]) → int8[]连接两个数组。
array_cat(left: int4[], right: int8[]) → int8[]连接两个数组。
array_cat(left: int8[], right: int2[]) → int8[]连接两个数组。
array_cat(left: int8[], right: int4[]) → int8[]连接两个数组。
array_cat(left: int8[], right: int8[]) → int8[]连接两个数组。
array_cat(left: interval[], right: interval[]) → interval[]连接两个数组。
array_cat(left: string[], right: string[]) → string[]连接两个数组。
array_cat(left: time[], right: time[]) → time[]连接两个数组。
array_cat(left: timestamp[], right: timestamp[]) → timestamp[]连接两个数组。
array_cat(left: timestamptz[], right: timestamptz[]) → timestamptz[]连接两个数组。
array_cat(left: uuid[], right: uuid[]) → uuid[]连接两个数组。
array_cat(left: oid[], right: oid[]) → oid[]连接两个数组。
array_cat(left: timetz[], right: timetz[]) → timetz[]连接两个数组。
array_cat(left: varbit[], right: varbit[]) → varbit[]连接两个数组。
array_length(input:anyelement[],array_dimension: int8) → int8array_dimension 维度计算 input 的长度。但是,KWDB 尚不支持多维数组,因此唯一支持的 array_dimension 为 1。
array_lower(input:anyelement[],array_dimension: int8) → int8array_dimension 维度计算 input 的最小值。但是,KWDB 尚不支持多维数组,因此唯一支持的 array_dimension 为 1。
array_position(array: bool[], elem: bool) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: bytes[], elem: bytes) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: date[], elem: date) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: decimal[], elem: decimal) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: float4[], elem: float4) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: float8[], elem: float8) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: inet[], elem: inet) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: int2[], elem: int2) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: int4[], elem: int4) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: int8[], elem: int8) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: interval[], elem: interval) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: string[], elem: string) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: time[], elem: time) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array:timestamp[],elem:timestamp) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array:timestamptz[],elem:timestamptz) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: uuid[], elem: uuid) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: oid[], elem: oid) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: timetz[], elem: timetz) → int8返回数组中第一次出现 elem 元素的索引。
array_position(array: varbit[], elem: varbit) → int8返回数组中第一次出现 elem 元素的索引。
array_positions(array: bool[], elem: bool) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: bytes[], elem: bytes) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: date[], elem: date) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: decimal[], elem: decimal) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: float4[], elem: float4) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: float8[], elem: float8) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: inet[], elem: inet) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: int2[], elem: int2) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: int4[], elem: int4) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: int8[], elem: int8) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: interval[], elem: interval) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: string[], elem: string) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: time[], elem: time) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array:timestamp[],elem:timestamp) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array:timestamptz[],elem:timestamptz) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: uuid[], elem: uuid) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: oid[], elem: oid) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: timetz[], elem: timetz) → int8[]返回数组中出现 elem 元素的所有索引。
array_positions(array: varbit[], elem: varbit) → int8[]返回数组中出现 elem 元素的所有索引。
array_prepend(elem: bool, array: bool[]) → bool[]将元素放到数组前,返回结果。
array_prepend(elem: bytes, array: bytes[]) → bytes[]将元素放到数组前,返回结果。
array_prepend(elem: date, array: date[]) → date[]将元素放到数组前,返回结果。
array_prepend(elem: decimal, array: decimal[]) → decimal[]将元素放到数组前,返回结果。
array_prepend(elem: float4, array: float4[]) → float4[]将元素放到数组前,返回结果。
array_prepend(elem: float8, array: float8[]) → float8[]将元素放到数组前,返回结果。
array_prepend(elem: inet, array: inet[]) → inet[]将元素放到数组前,返回结果。
array_prepend(elem: int2, array: int2[]) → int2[]将元素放到数组前,返回结果。
array_prepend(elem: int4, array: int4[]) → int4[]将元素放到数组前,返回结果。
array_prepend(elem: int8, array: int8[]) → int8[]将元素放到数组前,返回结果。
array_prepend(elem: interval, array: interval[]) → interval[]将元素放到数组前,返回结果。
array_prepend(elem: string, array: string[]) → string[]将元素放到数组前,返回结果。
array_prepend(elem: time, array: time[]) → time[]将元素放到数组前,返回结果。
array_prepend(elem:timestamp,array:timestamp[]) → timestamp[]将元素放到数组前,返回结果。
array_prepend(elem:timestamptz,array:timestamptz[]) → timestamptz[]将元素放到数组前,返回结果。
array_prepend(elem: uuid, array: uuid[]) → uuid[]将元素放到数组前,返回结果。
array_prepend(elem: oid, array: oid[]) → oid[]将元素放到数组前,返回结果。
array_prepend(elem: timetz, array: timetz[]) → timetz[]将元素放到数组前,返回结果。
array_prepend(elem: varbit, array: varbit[]) → varbit[]将元素放到数组前,返回结果。
array_remove(array: bool[], elem: bool) → bool[]从数组中删除所有等于 elem 的元素。
array_remove(array: bytes[], elem: bytes) → bytes[]从数组中删除所有等于 elem 的元素。
array_remove(array: date[], elem: date) → date[]从数组中删除所有等于 elem 的元素。
array_remove(array: decimal[], elem: decimal) → decimal[]从数组中删除所有等于 elem 的元素。
array_remove(array: float4[], elem: float4) → float4[]从数组中删除所有等于 elem 的元素。
array_remove(array: float8[], elem: float8) → float8[]从数组中删除所有等于 elem 的元素。
array_remove(array: inet[], elem: inet) → inet[]从数组中删除所有等于 elem 的元素。
array_remove(array: int2[], elem: int2) → int2[]从数组中删除所有等于 elem 的元素。
array_remove(array: int4[], elem: int4) → int4[]从数组中删除所有等于 elem 的元素。
array_remove(array: int8[], elem: int8) → int8[]从数组中删除所有等于 elem 的元素。
array_remove(array: interval[], elem: interval) → interval[]从数组中删除所有等于 elem 的元素。
array_remove(array: string[], elem: string) → string[]从数组中删除所有等于 elem 的元素。
array_remove(array: time[], elem: time) → time[]从数组中删除所有等于 elem 的元素。
array_remove(array:timestamp[],elem:timestamp) → timestamp[]从数组中删除所有等于 elem 的元素。
array_remove(array:timestamptz[],elem:timestamptz) → timestamptz[]从数组中删除所有等于 elem 的元素。
array_remove(array: uuid[], elem: uuid) → uuid[]从数组中删除所有等于 elem 的元素。
array_remove(array: oid[], elem: oid) → oid[]从数组中删除所有等于 elem 的元素。
array_remove(array: timetz[], elem: timetz) → timetz[]从数组中删除所有等于 elem 的元素。
array_remove(array: varbit[], elem: varbit) → varbit[]从数组中删除所有等于 elem 的元素。
array_replace(array: bool[], toreplace: bool, replacewith: bool) → bool[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: bytes[], toreplace: bytes, replacewith: bytes) → bytes[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: date[], toreplace: date, replacewith: date) → date[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: decimal[], toreplace: decimal, replacewith: decimal) → decimal[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: float4[], toreplace: float4, replacewith: float4) → float4[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: float8[], toreplace: float8, replacewith: float8) → float8[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: inet[], toreplace: inet, replacewith: inet) → inet[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: int2[], toreplace: int2, replacewith: int2) → int2[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: int4[], toreplace: int4, replacewith: int4) → int4[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: int8[], toreplace: int8, replacewith: int8) → int8[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: interval[], toreplace: interval, replacewith: interval) → interval[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: string[], toreplace: string, replacewith: string) → string[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: time[], toreplace: time, replacewith: time) → time[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: timestamp[], toreplace: timestamp, replacewith: timestamp) → timestamp[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: timestamptz[], toreplace: timestamptz, replacewith: timestamptz) → timestamptz[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: uuid[], toreplace: uuid, replacewith: uuid) → uuid[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: oid[], toreplace: oid, replacewith: oid) → oid[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: timetz[], toreplace: timetz, replacewith: timetz) → timetz[]replacewith 替换数组中所有出现的 toreplace
array_replace(array: varbit[], toreplace: varbit, replacewith: varbit) → varbit[]replacewith 替换数组中所有出现的 toreplace
array_to_string(input: anyelement[], delim: string) → string用定界符 delimiter 将数组元素连接为一个字符串。
array_to_string(input: anyelement[], delimiter: string, null: string) → string用定界符 delimiter 将数组元素连接为一个字符串,把 NULL 替换为 NULL 参数代表的字符串。
array_upper(input: anyelement[], array_dimension: int8) → int8array_dimension 维度计算 input 中的最大值。KWDB 尚不支持多维数组,因此唯一支持的 array_dimension 为 1。
string_to_array(str: string, delimiter: string) → string[]用定界符 delimiter 将字符串进行拆分。
string_to_array(str: string, delimiter: string, null: string) → string[]用定界符 delimiter 将字符串进行拆分,把 NULL 替换为 NULL 参数代表的字符串。

布尔函数

函数 → 返回值描述
ilike_escape(unescaped: string, pattern: string, escape: string) → boolpattern 使用 escape 作为转义标记来匹配不区分大小写的 unescaped。
inet_contained_by_or_equals(val: inet, container: inet) → bool仅使用地址的网络部分测试子网是否包含或相等。地址的主机部分被忽略。
inet_contains_or_equals(container: inet, val: inet) → bool仅使用地址的网络部分测试子网是否包含或相等。地址的主机部分被忽略。
inet_same_family(val: inet, val: inet) → bool检查两个 IP 是否属于同一个 IP 地址族。
like_escape(unescaped: string, pattern: string, escape: string) → boolpattern 使用 escape 作为转义标记来匹配 unescaped。
not_ilike_escape(unescaped: string, pattern: string, escape: string) → bool检查 pattern 使用 escape 作为转义标记是否不匹配不区分大小写的 unescaped。
not_like_escape(unescaped: string, pattern: string, escape: string) → bool检查 pattern 使用 escape 作为转义标记是否不匹配 unescaped。
not_similar_to_escape(unescaped: string, pattern: string, escape: string) → bool检查 pattern 使用 escape 作为转义标记是否不匹配 unescaped。
similar_to_escape(unescaped: string, pattern: string, escape: string) → boolpattern 使用 escape 作为转义标记来匹配 unescaped。

比较函数

函数 → 返回值描述
greatest(anyelement...) → anyelement返回值最大的元素。
least(anyelement...) → anyelement返回值最小的元素。

日期和时间函数

函数 → 返回值描述
age(end: timestamptz, begin: timestamptz) → interval计算 begin 和 end 之间的时间间隔。
age(val: timestamptz) → interval计算 val 与当前时间之间的间隔。
current_date() → date返回当前事务的日期。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
current_timestamp() → date返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
current_timestamp() → timestamp返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
current_timestamp() → timestamptz返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
current_timestamp(precision: int8) → date返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
current_timestamp(precision: int8) → timestamp返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
current_timestamp(precision: int8) → timestamptz返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
date_trunc(element: string, input: date) → timestamptz将输入截断成精度为 element,将所有无意义的字段设为 0(或对于日期和月份则设为 1)。兼容元素:millennium、century、decade、year、quarter、month、week、day、hour、minute、second、millisecond、microsecond。
date_trunc(element: string, input: time) → interval将输入截断成精度为 element,将所有无意义的字段设为 0。兼容元素: hour、minute、second、millisecond、microsecond。
date_trunc(element: string, input: timestamp) → timestamp将输入截断成精度为 element,将所有无意义的字段设为 0(或对于日期和月份则设为 1)。兼容元素:millennium、century、decade、year、quarter、month、week、day、hour、minute、second、millisecond、microsecond。
date_trunc(element: string, input: timestamptz) → timestamptz将输入截断成精度为 element,将所有无意义的字段设为 0(或对于日期和月份则设为 1)。兼容元素:millennium、century、decade、year、quarter、month、week、day、hour、minute、second、millisecond、microsecond。
experimental_strftime(input: date, extract_format: string) → string从输入中提取并格式化成 extract_format 标识的时间,extract_format 使用标准的 strftime 表示法(尽管不支持所有格式)。
experimental_strftime(input: timestamp, extract_format: string) → string从输入中提取并格式化成 extract_format 标识的时间,extract_format 使用标准的 strftime 表示法(尽管不支持所有格式)。
experimental_strftime(input: timestamptz, extract_format: string) → string从输入中提取并格式化成 extract_format 标识的时间,extract_format 使用标准的 strftime 表示法(尽管不支持所有格式)。
extract(element: string, input: date) → float8从输入中提取 element。兼容元素:millennium、century、decade、year、isoyear、quarter、month、week、dayofweek、isodow、dayofyear、julian、hour、minute、second、millisecond、microsecond、epoch。
extract(element: string, input: interval) → float8从输入中提取 element。兼容元素: millennium、century、decade、year、month、day、hour、minute、second、millisecond、microsecond、epoch。
extract(element: string, input: time) → float8从输入中提取 element。兼容元素:millennium、century、decade、year、month、day、hour、minute、second、millisecond、microsecond、epoch。
extract(element: string, input: timestamp) → float8从输入中提取 element。兼容元素:millennium、century、decade、year、isoyear、quarter、month、week、dayofweek、isodow、dayofyear、julian、hour、minute、second、millisecond、microsecond、epoch。
extract(element: string, input: timestamptz) → float8从输入中提取 element。兼容元素:millennium、century、decade、year、isoyear、quarter、month、week、dayofweek、isodow、dayofyear、julian、hour、minute、second、millisecond、microsecond、epoch、timezone、timezone_hour、timezone_minute。
extract(element: string, input: timetz) → float8从输入中提取 element。兼容元素:hour、minute、second、millisecond、microsecond、epoch、timezone、timezone_hour、timezone_minute。
extract(element: string, input: int2) → float8从输入中提取 element。兼容元素:hour、minute、second、millisecond、microsecond、epoch、timezone、timezone_hour、timezone_minute。
extract(element: string, input: int4) → float8从输入中提取 element。兼容元素:hour、minute、second、millisecond、microsecond、epoch、timezone、timezone_hour、timezone_minute。
extract(element: string, input: int8) → float8从输入中提取 element。兼容元素:hour、minute、second、millisecond、microsecond、epoch、timezone、timezone_hour、timezone_minute。
extract_duration(element: string, input: interval) → int8从输入中提取 element。兼容元素: hour、minute、second、millisecond、microsecond。
localtimestamp() → date返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
localtimestamp() → timestamp返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
localtimestamp() → timestamptz返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
localtimestamp(precision: int8) → date根据指定精度返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关,其中 precision 表示精度,指定了保留秒后的小数点后的位数。
localtimestamp(precision: int8) → timestamp根据指定精度返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关,其中 precision 表示精度,指定了保留秒后的小数点后的位数。
localtimestamp(precision: int8) → timestamptz根据指定精度返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关,其中 precision 表示精度,指定了保留秒后的小数点后的位数。
now() → date返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
now() → timestamp返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
now() → timestamptz返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
statement_timestamp() → timestamp返回当前语句的开始时间戳。
statement_timestamp() → timestamptz返回当前语句的开始时间戳。
timeofday() → string返回某个集群节点的当前系统时间。
timezone(time: time, timezone: string) → timetz将 time 转换为指定时区的 timetz 类型。
timezone(timestamp: timestamp, timezone: string) → timestamptz将 timestamp 转换为指定时区的 timestamptz 类型。
timezone(timestamptz: timestamptz, timezone: string) → timestamp将 timestamptz 转换到指定时区,返回不带时区的 timestamp 类型。
timezone(timetz: timetz, timezone: string) → timetz将 timetz 转换到指定时区,返回新时区的 timetz 类型。
timezone(timezone: string, time: time) → timetz将 time 转换为指定时区的 timetz 类型。
timezone(timezone: string, timestamp: timestamp) → timestamptz将 timestamp 转换为指定时区的 timestamptz 类型。
timezone(timezone: string, timestamptz: timestamptz) → timestamp将 timestamptz 转换到指定时区,返回不带时区的 timestamp 类型。
timezone(timezone: string, timestamptz_string: string) → timestamp将 timestamptz 转换到指定时区,返回不带时区的 timestamp 类型。
timezone(timezone: string, timetz: timetz) → timetz将 timetz 转换到指定时区,返回新时区的 timetz 类型。
transaction_timestamp() → date返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
transaction_timestamp() → timestamp返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
transaction_timestamp() → timestamptz返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。

ID 生成函数

函数 → 返回值描述
experimental_uuid_v4() → bytes返回一个 UUID。
gen_random_uuid() → uuid生成随机 UUID 并将其作为 UUID 类型的值返回。
unique_rowid() → int8如果表未定义主键,则返回一个唯一 ID,该 ID 被 KWDB 用于生成唯一的行 ID。该值是写入时间戳和执行语句的节点的 ID 的组合,这保证了此组合是全局唯一的。
uuid_v4() → bytes返回一个 UUID。

网络函数

函数 → 返回值描述
abbrev(val: inet) → string将 IP 地址和前缀长度转换为文本类型的缩写显示格式。对于 INET 类型,如果不是默认值(IPv4 为 32,IPv6 为 128),将省略前缀长度。例如,abbrev('192.168.1.2/24') 返回 '192.168.1.2/24'。
broadcast(val: inet) → inet获取 val 表示的网络地址的广播地址。例如,broadcast('192.168.1.2/24') 返回 '192.168.1.255/24'。
family(val: inet) → int8提取 val 的 IP 地址族; IPv4 为 4,IPv6 为 6。例如,family('::1') 返回 6。
host(val: inet) → string将组合地址/前缀值的地址部分提取为文本。例如,host('192.168.1.2/16') 返回'192.168.1.2'。
hostmask(val: inet) → inet创建与 val 中的前缀长度对应的 IP 主机掩码。例如,hostmask('192.168.1.2/16') 返回'0.0.255.255'。
masklen(val: inet) → int8检索存储在 val 中的前缀长度。例如,masklen('192.168.1.2/16') 返回 16。
netmask(val: inet) → inet创建与 val 中的前缀长度对应的 IP 网络掩码。例如,netmask('192.168.1.2/16') 返回'255.255.0.0'。
set_masklen(val: inet, prefixlen: int8) → inet将 val 的前缀长度设置为 prefixlen。例如,set_masklen('192.168.1.2',16) 返回'192.168.1.2/16'。
text(val: inet) → string将 IP 地址和前缀长度转换为文本格式。

JSONB 函数

函数 → 返回值描述
array_to_json(array: anyelement[]) → jsonb将数组返回为 JSON 或 JSONB。
array_to_json(array: anyelement[], pretty_bool: bool) → jsonb将数组返回为 JSON 或 JSONB。
json_array_length(json: jsonb) → int8返回 JSON 或 JSONB 数组中最外层元素的数量。
json_build_array(anyelement...) → jsonb从可变参数列表构建可能异构类型(Possibly-Heterogeneously-Typed)的 JSON 或 JSONB 数组。
json_build_object(anyelement...) → jsonb从可变参数列表构建 JSON 对象。
json_extract_path(jsonb, string...) → jsonb返回可变参数指向的 JSON 值。
json_object(keys: string[], values: string[]) → jsonb从两个独立的数组中成对获取键和值。在所有其他方面,与单参数形式相同。
json_object(texts: string[]) → jsonb从文本数组中构建 JSON 或 JSONB 对象。数组必须是一个具有偶数个成员的一维数组,数组成员被视为交替的键/值对。
json_remove_path(val: jsonb, path: string[]) → jsonb从 JSON 对象中删除指定的路径。
json_set(val: jsonb, path: string[], to: jsonb) → jsonb返回可变参数指向的 JSON 值。
json_set(val: jsonb, path: string[], to: jsonb, create_missing: bool) → jsonb返回可变参数指向的 JSON 值。如果 create_missingfalse,则不会将新 key 写入到对象中,并且值也不会被添加到数组
json_strip_nulls(from_json: jsonb) → jsonb返回 from_json,其中包含省略空值的所有对象字段。其他空值不受影响。
json_typeof(val: jsonb) → string以文本字符串形式返回最外层 JSON 值的类型。
jsonb_array_length(json: jsonb) → int8返回最外层 JSON 或 JSONB 数组中的元素的数量。
jsonb_build_array(anyelement...) → jsonb从可变参数列表构建可能异构类型(Possibly-Heterogeneously-Typed)的 JSON 或 JSONB 数组。
jsonb_build_object(anyelement...) → jsonb从可变参数列表构建 JSON 对象。
jsonb_extract_path(jsonb, string...) → jsonb返回可变参数指向的 JSON 值。
jsonb_insert(target: jsonb, path: string[], new_val: jsonb) → jsonb返回可变参数所指向的 JSON 值。new_val 将在路径目标之前写入。
jsonb_insert(target: jsonb, path: string[], new_val: jsonb, insert_after: bool) → jsonb返回可变参数所指向的 JSON 值。如果 insert_aftertrue(默认为 false),则将 new_val 写入到路径目标之后。
jsonb_object(keys: string[], values: string[]) → jsonb从两个独立的数组中成对获取键和值。在所有其他方面,与单参数形式相同。
jsonb_object(texts: string[]) → jsonb从文本数组中构建 JSON 或 JSONB 对象。数组必须是一个具有偶数个成员的一维数组,数组成员被视为交替的键/值对。
jsonb_pretty(val: jsonb) → string返回给定的 JSON 值,作为缩进的 STRING 和换行符。
jsonb_set(val: jsonb, path: string[], to: jsonb) → jsonb返回可变参数指向的 JSON 值。
jsonb_set(val: jsonb, path: string[], to: jsonb, create_missing: bool) → jsonb返回可变参数指向的 JSON 值。如果 create_missingfalse,则不会将新 key 写入到对象中,并且值也不会被添加到数组
jsonb_strip_nulls(from_json: jsonb) → jsonb返回 from_json,其中包含省略空值的所有对象字段。其他空值不受影响。
jsonb_typeof(val: jsonb) → string以文本字符串形式返回最外层 JSON 值的类型。
to_json(val: anyelement) → jsonb将 val 返回为 JSON 或 JSONB。
to_jsonb(val: anyelement) → jsonb将 val 返回为 JSON 或 JSONB。

数学和数值函数

函数 → 返回值描述
abs(val: decimal) → decimal计算 val 的绝对值。
abs(val: float4) → float4计算 val 的绝对值。
abs(val: float8) → float8计算 val 的绝对值。
abs(val: int2) → int2计算 val 的绝对值。
abs(val: int4) → int4计算 val 的绝对值。
abs(val: int8) → int8计算 val 的绝对值。
acos(val: float4) → float8计算 val 的反余弦值。
acos(val: float8) → float8计算 val 的反余弦值。
asin(val: float4) → float8计算 val 的反正弦值。
asin(val: float8) → float8计算 val 的反正弦值。
atan(val: float4) → float8计算 val 的反正切值。
atan(val: float8) → float8计算 val 的反正切值。
atan2(x: float4, y: float4) → float8计算 x / y 的反正切。
atan2(x: float4, y: float8) → float8计算 x / y 的反正切。
atan2(x: float8, y: float4) → float8计算 x / y 的反正切。
atan2(x: float8, y: float8) → float8计算 x / y 的反正切。
cbrt(val: decimal) → decimal计算 val 的立方根(∛)。
cbrt(val: float4) → float8计算 val 的立方根(∛)。
cbrt(val: float8) → float8计算 val 的立方根(∛)。
ceil(val: decimal) → decimal计算大于等于 val 的最小整数。
ceil(val: float4) → float8计算大于等于 val 的最小整数。
ceil(val: float8) → float8计算大于等于 val 的最小整数。
ceil(val: int2) → float8计算大于等于 val 的最小整数。
ceil(val: int4) → float8计算大于等于 val 的最小整数。
ceil(val: int8) → float8计算大于等于 val 的最小整数。
ceiling(val: decimal) → decimal计算大于等于 val 的最小整数。
ceiling(val: float4) → float8计算大于等于 val 的最小整数。
ceiling(val: float8) → float8计算大于等于 val 的最小整数。
ceiling(val: int2) → float8计算大于等于 val 的最小整数。
ceiling(val: int4) → float8计算大于等于 val 的最小整数。
ceiling(val: int8) → float8计算大于等于 val 的最小整数。
cos(val: float4) → float8计算 val 的余弦值。
cos(val: float8) → float8计算 val 的余弦值。
cot(val: float4) → float8计算 val 的余切值。
cot(val: float8) → float8计算 val 的余切值。
crc32c(bytes...) → int8使用 Castagnoli 多项式计算 CRC-32 哈希值。
crc32c(string...) → int8使用 Castagnoli 多项式计算 CRC-32 哈希值。
crc32ieee(bytes...) → int8使用 IEEE 多项式计算 CRC-32 哈希值。
crc32ieee(string...) → int8使用 IEEE 多项式计算 CRC-32 哈希值。
degrees(val: float4) → float8将 val 作为弧度值转换为度数值。
degrees(val: float8) → float8将 val 作为弧度值转换为度数值。
div(x: decimal, y: decimal) → decimal计算 x / y 的整数商。
div(x: float4, y: float4) → float8计算 x / y 的整数商。
div(x: float4, y: float8) → float8计算 x / y 的整数商。
div(x: float8, y: float4) → float8计算 x / y 的整数商。
div(x: float8, y: float8) → float8计算 x / y 的整数商。
div(x: int2, y: int2) → int8计算 x / y 的整数商。
div(x: int2, y: int4) → int8计算 x / y 的整数商。
div(x: int2, y: int8) → int8计算 x / y 的整数商。
div(x: int4, y: int2) → int8计算 x / y 的整数商。
div(x: int4, y: int4) → int8计算 x / y 的整数商。
div(x: int4, y: int8) → int8计算 x / y 的整数商。
div(x: int8, y: int2) → int8计算 x / y 的整数商。
div(x: int8, y: int4) → int8计算 x / y 的整数商。
div(x: int8, y: int8) → int8计算 x / y 的整数商。
exp(val: decimal) → decimal计算 e ^ val。
exp(val: float4) → float8计算 e ^ val。
exp(val: float8) → float8计算 e ^ val。
floor(val: decimal) → decimal计算不大于 val 的最大整数。
floor(val: float4) → float8计算不大于 val 的最大整数。
floor(val: float8) → float8计算不大于 val 的最大整数。
floor(val: int2) → float8计算不大于 val 的最大整数。
floor(val: int4) → float8计算不大于 val 的最大整数。
floor(val: int8) → float8计算不大于 val 的最大整数。
fnv32(bytes...) → int8计算一组值的 32 位 FNV-1 哈希值。
fnv32(string...) → int8计算一组值的 32 位 FNV-1 哈希值。
fnv32a(bytes...) → int8计算一组值的 32 位 FNV-1a 哈希值。
fnv32a(string...) → int8计算一组值的 32 位 FNV-1a 哈希值。
fnv64(bytes...) → int8计算一组值的 64 位 FNV-1 哈希值。
fnv64(string...) → int8计算一组值的 64 位 FNV-1 哈希值。
fnv64a(bytes...) → int8计算一组值的 64 位 FNV-1a 哈希值。
fnv64a(string...) → int8计算一组值的 64 位 FNV-1a 哈希值。
isnan(val: decimal) → bool如果 val 是 NaN,则返回 true,否则返回 false
isnan(val: float4) → bool如果 val 是 NaN,则返回 true,否则返回 false
isnan(val: float8) → bool如果 val 是 NaN,则返回 true,否则返回 false
ln(val: decimal) → decimal计算 val 的自然对数。
ln(val: float4) → float8计算 val 的自然对数。
ln(val: float8) → float8计算 val 的自然对数。
log(b: decimal, x: decimal) → decimal计算 val 的指定基数的 log。
log(b: float4, x: float4) → float8计算 val 的指定基数的 log。
log(b: float4, x: float8) → float8计算 val 的指定基数的 log。
log(b: float8, x: float4) → float8计算 val 的指定基数的 log。
log(b: float8, x: float8) → float8计算 val 的指定基数的 log。
log(val: decimal) → decimal计算 val 的基数为 10 的 log。
log(val: float4) → float8计算 val 的基数为 10 的 log。
log(val: float8) → float8计算 val 的基数为 10 的 log。
mod(x: decimal, y: decimal) → decimal计算 x%y。
mod(x: float4, y: float4) → float8计算 x%y。
mod(x: float4, y: float8) → float8计算 x%y。
mod(x: float8, y: float4) → float8计算 x%y。
mod(x: float8, y: float8) → float8计算 x%y。
mod(x: int2, y: int2) → int8计算 x%y。
mod(x: int2, y: int4) → int8计算 x%y。
mod(x: int2, y: int8) → int8计算 x%y。
mod(x: int4, y: int2) → int8计算 x%y。
mod(x: int4, y: int4) → int8计算 x%y。
mod(x: int4, y: int8) → int8计算 x%y。
mod(x: int8, y: int2) → int8计算 x%y。
mod(x: int8, y: int4) → int8计算 x%y。
mod(x: int8, y: int8) → int8计算 x%y。
pi() → float8返回 pi 的值(3.141592653589793)。
pow(x: decimal, y: decimal) → decimal计算 x^y。
pow(x: float4, y: float4) → float8计算 x^y。
pow(x: float4, y: float8) → float8计算 x^y。
pow(x: float8, y: float4) → float8计算 x^y。
pow(x: float8, y: float8) → float8计算 x^y。
pow(x: int2, y: int2) → int8计算 x^y。
pow(x: int2, y: int4) → int8计算 x^y。
pow(x: int2, y: int8) → int8计算 x^y。
pow(x: int4, y: int2) → int8计算 x^y。
pow(x: int4, y: int4) → int8计算 x^y。
pow(x: int4, y: int8) → int8计算 x^y。
pow(x: int8, y: int2) → int8计算 x^y。
pow(x: int8, y: int4) → int8计算 x^y。
pow(x: int8, y: int8) → int8计算 x^y。
power(x: decimal, y: decimal) → decimal计算 x^y。
power(x: float4, y: float4) → float8计算 x^y。
power(x: float4, y: float8) → float8计算 x^y。
power(x: float8, y: float4) → float8计算 x^y。
power(x: float8, y: float8) → float8计算 x^y。
power(x: int2, y: int2) → int8计算 x^y。
power(x: int2, y: int4) → int8计算 x^y。
power(x: int2, y: int8) → int8计算 x^y。
power(x: int4, y: int2) → int8计算 x^y。
power(x: int4, y: int4) → int8计算 x^y。
power(x: int4, y: int8) → int8计算 x^y。
power(x: int8, y: int2) → int8计算 x^y。
power(x: int8, y: int4) → int8计算 x^y。
power(x: int8, y: int8) → int8计算 x^y。
radians(val: float4) → float8将 val 作为度数值转换为弧度值。
radians(val: float8) → float8将 val 作为度数值转换为弧度值。
random() → float8返回 0 到 1 之间的随机浮点数。
round(input: decimal, decimal_accuracy: int8) → decimal使用四舍六入五远零(half away from zero)规则保留 input 中零右侧 decimal_accuracy 位数字。如果 decimal_accuracy 不在 -2^31…(2^31-1) 范围内,则结果是未定义的。
round(input: float4, decimal_accuracy: int8) → float8使用四舍六入五成双(half to even)(即银行家)规则保留 input 中零右侧 decimal_accuracy 位数字。
round(input: float8, decimal_accuracy: int8) → float8使用四舍六入五成双(half to even)(即银行家)规则保留 input 中零右侧 decimal_accuracy 位数字。
round(val: decimal) → decimal使用四舍六入五远零(half away from zero)规则将 val 舍入到最接近的整数:ROUND(+/- 2.4)= +/- 2ROUND(+/- 2.5)= +/- 3
round(val: float4) → float8使用“四舍六入五成双(half to even)(即银行家)规则将 val 舍入到最接近的整数。
round(val: float8) → float8使用四舍六入五成双(half to even)(即银行家)规则将 val 舍入到最接近的整数。
sign(val: decimal) → decimal确定 val 的符号:
- 1 表示正。
- 0 表示值 0。
- -1 表示负。
sign(val: float4) → float8确定 val 的符号:
- 1 表示正。
- 0 表示值 0。
- -1 表示负。
sign(val: float8) → float8确定 val 的符号:
- 1 表示正。
- 0 表示值 0。
- -1 表示负。
sign(val: int2) → int8确定 val 的符号:
- 1 表示正。
- 0 表示值 0。
- -1 表示负。
sign(val: int4) → int8确定 val 的符号:
- 1 表示正。
- 0 表示值 0。
- -1 表示负。
sign(val: int8) → int8确定 val 的符号:
- 1 表示正。
- 0 表示值 0。
- -1 表示负。
sin(val: float4) → float8计算 val 的正弦值。
sin(val: float8) → float8计算 val 的正弦值。
sqrt(val: decimal) → decimal计算 val 的平方根。
sqrt(val: float4) → float8计算 val 的平方根。
sqrt(val: float8) → float8计算 val 的平方根。
tan(val: float4) → float8计算 val 的正切值。
tan(val: float8) → float8计算 val 的正切值。
trunc(val: decimal) → decimal截断 val 的十进制值。
trunc(val: float4) → float8截断 val 的十进制值。
trunc(val: float8) → float8截断 val 的十进制值。
width_bucket(operand: decimal, b1: decimal, b2: decimal, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int2, b2: int2, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int2, b2: int4, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int2, b2: int8, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int4, b2: int2, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int4, b2: int4, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int4, b2: int8, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int8, b2: int2, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int8, b2: int4, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int8, b2: int8, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: anyelement, thresholds: anyelement[]) → int8返回为存储桶下限的数组分配操作数的存储桶编号,对于小于第一个下限的输入,返回 0。阈值数组必须排序,最小值优先,否则将返回非预期结果。

序列函数

函数 → 返回值描述
currval(sequence_name: string) → int8返回此会话中此序列的 nextval 获取的最新值。
lastval() → int8在此会话中使用 nextval 最近获得的返回值。
nextval(sequence_name: string) → int8推进给定的序列并返回其新值。
setval(sequence_name: string, value: int8) → int8设置给定序列的当前值。nextval 的下一次调用将返回 value + Increment
setval(sequence_name: string, value: int8, is_called: bool) → int8设置给定序列的当前值。如果 is_calledfalse,则对 nextval 的下一次调用将返回 value; 否则返回 value + Increment

设定-返回函数

函数 → 返回值描述
aclexplode(aclitems: string[]) → tuple{oid AS grantor, oid AS grantee, string AS privilege_type, bool AS is_grantable}生成一个包含 aclitem 内容的虚拟表。
kwdb_internal.testing_callback(name: string) → int8仅适用于内部 KWDB 测试。该函数会调用由测试在服务器注册的标识为 name 的回调函数。
kwdb_internal.unary_table() → tuple生成不包含任何值的单行的虚拟表。仅供 KWDB 的开发人员测试使用。
generate_series(start: int8, end: int8) → int8生成一个虚拟表,其中包含从 start 到 end 的整数值。
generate_series(start: int8, end: int8, step: int8) → int8生成一个虚拟表,其中包含从 start 到 end,并以 step 为步长的整型值。
generate_series(start: timestamp, end: timestamp, step: interval) → timestamp生成一个虚拟表,其中包含从 start 到 end,并以 step 为间隔的时间戳值。
generate_subscripts(array: anyelement[]) → int8返回一个包含给定数组下标的系列。
generate_subscripts(array: anyelement[], dim: int8) → int8返回一个包含给定数组下标的系列。
generate_subscripts(array: anyelement[], dim: int8, reverse: bool) → int8返回一个包含给定数组下标的系列。当 reversetrue 时,将以相反的顺序返回系列。
information_schema._pg_expandarray(input: anyelement[]) → anyelement将输入数组作为带有索引的行集合返回。
json_array_elements(input: jsonb) → jsonb将 JSON 数组扩展为 JSON 值集合。
json_array_elements_text(input: jsonb) → string将 JSON 数组扩展为文本值集合。
json_each(input: jsonb) → tuple{string AS key, jsonb AS value}将最外层的 JSON 或 JSONB 对象扩展为键/值对集合。
json_each_text(input: jsonb) → tuple{string AS key, string AS value}将最外层的 JSON 或 JSONB 对象扩展为键/值对集合。返回的值是 text 类型。
json_object_keys(input: jsonb) → string返回最外层 JSON 对象中的有序键集。
jsonb_array_elements(input: jsonb) → jsonb将 JSON 数组扩展为一组 JSON 值。
jsonb_array_elements_text(input: jsonb) → string将 JSON 数组扩展为一组文本值。
jsonb_each(input: jsonb) → tuple{string AS key, jsonb AS value}将最外层的 JSON 或 JSONB 对象扩展为一组键/值对。
jsonb_each_text(input: jsonb) → tuple{string AS key, string AS value}将最外层的 JSON 或 JSONB 对象扩展为一组键/值对。返回的值是 text 类型。
jsonb_object_keys(input: jsonb) → string返回最外层 JSON 对象中的有序键集。
pg_get_keywords() → tuple{string AS word, string AS catcode, string AS catdesc}生成包含 SQL 解析器能识别的关键字的虚拟表。
unnest(anyelement[], anyelement[], anyelement[]...) → tuple{anyelement AS unnest, anyelement AS unnest, anyelement AS unnest}以行集合的形式返回输入数组。
unnest(input: anyelement[]) → anyelement以行集合的形式返回输入数组。

字符串和字节函数

函数 → 返回值描述
ascii(val: string) → int8返回 val 中第一个字符的字符代码。虽然函数名称叫 ascii,该函数也支持 Unicode 字符。
bit_length(val: bytes) → int8计算 val 中的位数。
bit_length(val: string) → int8计算用于表示 val 的位数。
bit_length(val: varbit) → int8计算用于表示 val 的位数。
btrim(input: string, trim_chars: string) → string从输入的开头或结尾删除 trim_chars 中包含的任何字符(递归应用)。例如,btrim('doggie','od') 返回 ggi
btrim(val: string) → string删除 val 的开头和结尾的所有空格。
char_length(val: bytes) → int8计算 val 中的字节数。
char_length(val: string) → int8计算 val 中的字符数。
character_length(val: bytes) → int8计算 val 中的字节数。
character_length(val: string) → int8计算 val 中的字符数。
chr(val: int2) → string返回带有 val 中给出的代码的字符。ascii() 的反函数。
chr(val: int4) → string返回带有 val 中给出的代码的字符。ascii() 的反函数。
chr(val: int8) → string返回带有 val 中给出的代码的字符。ascii() 的反函数。
concat(string...) → string连接使用逗号(,)隔开的字符串列表。
concat_ws(string...) → string使用第一个参数作为后续参数的串联分隔符。例如,concat_ws('!','wow','great') 返回 wow!great
convert_from(str: bytes, enc: string) → stringstr 使用 encoding 将字节解码为字符串 enc。支持 UTF8 和 LATIN1 编码。
convert_to(str: string, enc: string) → bytesstr 使用 encoding 将字符串编码为字节数组 enc。支持 UTF8 和 LATIN1 编码。
decode(text: string, format: string) → bytes以 format 指定的格式解码数据(仅支持 hexescape)。
encode(data: bytes, format: string) → string以 format 指定的文本格式对数据进行编码(仅支持 hexescape)。
from_ip(val: bytes) → string将 IP 的字节字符串表示形式转换为其字符串表示形式。
from_uuid(val: bytes) → string将 UUID 的字节字符串表示形式转换为其字符串表示形式。
get_bit(bit_string: varbit, index: int8) → int8提取位数组中的指定位。
get_bit(byte_string: bytes, index: int8) → int8提取位数组中的指定位。
initcap(val: string) → string将 val 的第一个字母大写。
left(input: bytes, return_set: int8) → bytes从 input 返回前 return_set 个字节。
left(input: string, return_set: int8) → string从 input 返回前 return_set 个字符。
length(val: bytes) → int8计算 val 中的字节数。
length(val: string) → int8计算 val 中的字符数。
length(val: varbit) → int8计算 val 中的字符数。
lower(val: string) → string将 val 中的所有字符转换为小写。
lpad(string: string, length: int8) → string在字符串的左侧添加双引号(""),以填充字符串的长度。如果字符串的长度超过长度,则会被截断。
lpad(string: string, length: int8, fill: string) → string在字符串的左侧添加 fill,以填充字符串的长度。如果字符串的长度超过长度,则会被截断。
ltrim(input: string, trim_chars: string) → string从输入的开头(左侧)删除 trim_chars 中包含的任何字符(递归应用)。例如,ltrim('doggie','od') 返回 ggie
ltrim(val: string) → string删除 val 开头(左侧)的所有空格。
md5(bytes...) → string计算一组值的 MD5 哈希值。
md5(string...) → string计算一组值的 MD5 哈希值。
octet_length(val: bytes) → int8计算 val 中的字节数。
octet_length(val: string) → int8计算用于表示 val 的字节数。
octet_length(val: varbit) → int8计算用于表示 val 的字节数。
overlay(input:string,overlay_val: string, start_pos: int8) → string使用 overlay_val 替换 input 中的字符,从 start_pos 开始(从 1 开始)。例如,overlay('doggie','CAT',2) 返回 dCATie
overlay(input:string,overlay_val: string, start_pos: int8, end_pos: int8) → string删除 start_posend_pos 之间 input 中的字符(count 从 1 开始),然后在 start_pos 中写入 overlay_val
pg_collation_for(str: anyelement) → string返回参数的排序规则。
quote_ident(val: string) → string返回一个适当的 val 引用值,使其作为 SQL 语句中的标识符。
quote_literal(val: string) → string返回一个适当的 val 引用值,使其作为 SQL 语句中的字符串文本。
quote_literal(val: anyelement) → string将 val 转换为字符串,然后将其作为文本引用。
quote_nullable(val: string) → string将 val 转换为字符串,然后将其作为文本引用。如果 val 为 NULL,则返回 NULL。
quote_nullable(val: anyelement) → string将 val 转换为字符串,然后将其作为文本引用。如果 val 为 NULL,则返回 NULL。
regexp_extract(input: string, regex: string) → string返回 input 中正则表达式 regex 的第一个匹配项。
regexp_replace(input: string, regex: string, replace: string) → string使用 replace 来替换 input 中正则表达式的匹配项。
regexp_replace(input:string, regex: string, replace: string, flags: string) → string修改 input 字符串,将其中正则表达式 regex 的匹配项,替换为正则表达式 replace。匹配模式由 flag 参数控制。KWDB 支持以下参数:
- -c:区分大小写的匹配
- -g:全局匹配(匹配每个子字符串而不是仅匹配第一个)
- -i:不区分大小写的匹配
- -m/n:换行敏感(.... 匹配换行符:no,\^$ 匹配线边界:yes)
- -p:部分对换行符敏感的匹配(.... 匹配换行符:no,\^$ 匹配线边界:yes)
- -s:换行不敏感(默认选项,.... 匹配换行符:no,\^$ 匹配线边界:yes)
- -w:反向部分对换行符敏感的匹配(.... 匹配换行符:no,\^$ 匹配线边界:yes)
repeat(input: string, repeat_counter: int8) → string将 input 进行 repeat_counter 次连接。例如,repeat('dog',2) 返回 dogdog。
replace(input: string, find: string, replace: string) → string用 replace 替换 input 中的所有出现的 find。
reverse(val: string) → string反转字符串字符的顺序。
right(input: bytes, return_set: int8) → bytes从 input 返回最后 return_set 个字节。
right(input: string, return_set: int8) → string返回 input 中最后 return_set 个字符。
rpad(string: string, length: int8) → string在字符串的右侧添加双引号(""),以填充字符串的长度。如果字符串的长度超过长度,则会被截断。
rpad(string: string, length: int8, fill: string) → string在字符串的右侧添加 fill,以填充字符串的长度。如果字符串的长度超过长度,则会被截断。
rtrim(input: string, trim_chars: string) → string从输入的末尾(右侧)删除 trim_chars 中包含的任何字符(递归应用)。例如,rtrim('doggie','ei') 返回 dogg
rtrim(val: string) → string从 val 的末端(右侧)移除所有空格。
set_bit(bit_string: varbit, index: int8, to_set: int8) → varbit设置位数组中的指定位。
set_bit(byte_string: bytes, index: int8, to_set: int8) → bytes设置位数组中的指定位。
sha1(bytes...) → string计算一组值的 SHA1 哈希值。
sha1(string...) → string计算一组值的 SHA1 哈希值。
sha256(bytes...) → string计算一组值的 SHA256 哈希值。
sha256(string...) → string计算一组值的 SHA256 哈希值。
sha512(bytes...) → string计算一组值的 SHA512 哈希值。
sha512(string...) → string计算一组值的 SHA512 哈希值。
split_part(input: string, delimiter: string, return_index_pos: int8) → string使用 delimiter 分隔符拆分 input 并返回 return_index_pos 位置的值(从 1 开始)。例如,split_part('123.456.789.0','.',3) 返回 789
strpos(input: string, find: string) → int8计算字符串 find 在输入中开始的位置。例如,strpos('doggie','gie') 返回 4
substr(input: string, regex: string) → string返回与正则表达式 regex 匹配的 input 子字符串。
substr(input: string, regex: string, escape_char: string) → string返回与正则表达式 regex 匹配的 input 子字符串,使用 escape_char 作为转义字符而不是作为正则表达式的特殊符号。
substr(input: string, start_pos: int8) → string返回 start_posend_pos 之间的 input 子字符串(从 1 开始计数)。
substr(input: string, start_pos: int8, length: int8) → string返回从 substr_pos 开始的 input 子字符串(从 1 开始计数)。
substring(input: string, regex: string) → string返回与正则表达式匹配 regex 的 input 子字符串。
substring(input: string, regex: string, escape_char: string) → string返回与正则表达式匹配 regex 的 input 子字符串,使用 escape_char 作为转义字符而不是作为正则表达式的特殊符号。
substring(input: string, start_pos: int8) → string返回 start_posend_pos 之间的 input 子字符串(从 1 开始计数)。
substring(input: string, start_pos: int8, length: int8) → string返回从 substr_pos 开始的 input 子字符串(从 1 开始计数)。
to_english(val: int8) → string用英文表示整数参数的值。
to_hex(val: bytes) → string将 val 转换为十六进制表示形式。
to_hex(val: int8) → string将 val 转换为十六进制表示形式。
to_hex(val: string) → string将 val 转换为十六进制表示形式。
to_ip(val: string) → bytes将 IP 的字符串表示形式转换为字节字符串表示形式。
to_uuid(val: string) → bytes将 UUID 的字符串表示形式转换为字节字符串表示形式。
translate(input: string, find: string, replace: string) → string在输入中,将 find 中的第一个字符替换为 replace 的第一个字符。对查找中的每个字符重复进行。例如,translate('doggie','dog','123'); 返回 1233ie
upper(val: string) → string将 val 中的所有字符转换为大写字母。

系统信息函数

函数 → 返回值描述
kwdb_internal.encode_key(table_id: int8, index_id: int8, row_tuple: tuple) → bytes为特定表和索引上的一行生成键。
kwdb_internal.force_assertion_error(msg: string) → int8仅供 KWDB 的开发人员测试使用。
kwdb_internal.force_error(errorCode: string, msg: string) → int8仅供 KWDB 的开发人员测试使用。
kwdb_internal.force_log_fatal(msg: string) → int8仅供 KWDB 的开发人员测试使用。
kwdb_internal.force_panic(msg: string) → int8仅供 KWDB 的开发人员测试使用。
kwdb_internal.force_retry(val: interval) → int8仅供 KWDB 的开发人员测试使用。
kwdb_internal.get_namespace_id(parent_id: int8, name: string) → int8获取命名空间 ID。
kwdb_internal.get_zone_config(namespace_id: int8) → bytes获取区域配置。
kwdb_internal.is_admin() → bool获取当前用户的 admin 状态。
kwdb_internal.lease_holder(key: bytes) → int8用于获取与请求密钥相对应的租约持有人。
kwdb_internal.locality_value(key: string) → string返回指定位置键的值。
kwdb_internal.no_constant_folding(input: anyelement) → anyelement仅供 KWDB 的开发人员测试使用。
kwdb_internal.node_executable_version() → string返回此节点正在运行的 KWDB 的版本。
kwdb_internal.notice(msg: string) → int8仅供 KWDB 的开发人员测试使用。
kwdb_internal.num_inverted_index_entries(val: anyelement[]) → int8仅供 KWDB 的开发人员测试使用。
kwdb_internal.num_inverted_index_entries(val: jsonb) → int8仅供 KWDB 的开发人员测试使用。
kwdb_internal.pretty_key(raw_key: bytes, skip_fields: int8) → string仅供 KWDB 的开发人员测试使用。
kwdb_internal.range_stats(key: bytes) → jsonb用于将范围统计信息作为 JSON 对象检索。
kwdb_internal.round_decimal_values(val: decimal, scale: int8) → decimal在内部用于在突变期间舍入十进制值。
kwdb_internal.round_decimal_values(val: decimal[], scale: int8) → decimal[]在内部用于在突变期间舍入十进制数组的值。
kwdb_internal.set_vmodule(vmodule_string: string) → int8在处理此请求的网关节点上设置 --vmodule 标志的等效项。它可以控制不同文件的日志记录详细程度。语法范例:kwdb_internal.set_vmodule('recordio = 2,file = 1,gfs * = 3')。重置为:kwdb_internal.set_vmodule('')。提高详细程度可能会严重影响性能。
current_database() → string返回当前数据库。
current_schema() → string返回当前 schema。
current_schemas(include_pg_catalog: bool) → string[]返回搜索路径中的有效 schema。
current_user() → string返回当前用户。该功能为了与 PostgreSQL 兼容。
version() → string返回节点的 KWDB 版本。

时间函数

函数 → 返回值描述
current_time() → time返回不带时区的当前事务的时间。
current_time() → timetz返回带有时区的当前事务的时间。
current_time(precision: INT8) → time返回不带时区的当前事务的时间。
current_time(precision: INT8) → timetz返回带有时区的当前事务的时间。
localtime() → time返回不带时区的当前事务的时间。
localtime() → timetz返回带有时区的当前事务的时间。
localtime(precision: INT8) → time返回不带时区的当前事务的时间。
localtime(precision: INT8) → timetz返回带有时区的当前事务的时间。

元组函数

函数 → 返回值描述
row_to_JSON(row: tuple) → jsonb以 JSON 对象的形式返回该行。

兼容性函数

函数 → 返回值描述
format_type(type_oid: oid, typemod: INT8) → STRING返回由其类型 OID 和可能的类型修饰符标识的数据类型的 SQL 名称。目前,类型修饰符会被忽略。
getdatabaseencoding() → STRING返回数据库使用的编码名称。
has_any_column_privilege(table:STRING, privilege: STRING) → BOOL当前用户是否对表的所有列具有权限。
has_any_column_privilege(table: oid, privilege: STRING) → BOOL当前用户是否对表的所有列具有权限。
has_any_column_privilege(user: STRING, table: STRING, privilege: STRING) → BOOL用户是否对表的所有列具有权限。
has_any_column_privilege(user: STRING, table: oid, privilege: STRING) → BOOL用户是否对表的所有列具有权限。
has_any_column_privilege(user: oid, table: STRING, privilege: STRING) → BOOL用户是否对表的所有列具有权限。
has_any_column_privilege(user: oid, table: oid, privilege: STRING) → BOOL用户是否对表的所有列具有权限。
has_column_privilege(table: STRING, column: INT8, privilege: STRING) → BOOL当前用户是否具有列权限。
has_column_privilege(table: STRING, column: STRING, privilege: STRING) → BOOL当前用户是否具有列权限。
has_column_privilege(table: oid, column: INT8, privilege: STRING) → BOOL当前用户是否具有列权限。
has_column_privilege(table: oid, column: STRING, privilege: STRING) → BOOL当前用户是否具有列权限。
has_column_privilege(user: STRING, table: STRING, column: INT8, privilege: STRING) → BOOL用户是否具有列权限。
has_column_privilege(user: STRING, table: STRING, column: STRING, privilege: STRING) → BOOL用户是否具有列权限。
has_column_privilege(user: STRING, table: oid, column: INT8, privilege: STRING) → BOOL用户是否具有列权限。
has_column_privilege(user: STRING, table: oid, column: STRING, privilege: STRING) → BOOL用户是否具有列权限。
has_column_privilege(user: oid, table: STRING, column: INT8, privilege: STRING) → BOOL用户是否具有列权限。
has_column_privilege(user: oid, table: STRING, column: STRING, privilege: STRING) → BOOL用户是否具有列权限。
has_column_privilege(user: oid, table: oid, column: INT8, privilege: STRING) → BOOL用户是否具有列权限。
has_column_privilege(user: oid,table:oid, column: STRING, privilege: STRING) → BOOL用户是否具有列权限。
has_database_privilege(database:STRING, privilege: STRING) → BOOL当前用户是否拥有数据库权限。
has_database_privilege(database: oid, privilege: STRING) → BOOL当前用户是否拥有数据库权限。
has_database_privilege(user: STRING, database: STRING, privilege: STRING) → BOOL用户是否拥有数据库权限。
has_database_privilege(user: STRING, database: oid, privilege: STRING) → BOOL用户是否拥有数据库权限。
has_database_privilege(user: oid, database: STRING, privilege: STRING) → BOOL用户是否拥有数据库权限。
has_database_privilege(user: oid, database: oid, privilege: STRING) → BOOL用户是否拥有数据库权限。
has_foreign_data_wrapper_privilege(fdw: STRING, privilege: STRING) → BOOL当前用户是否拥有外部数据包装程序权限。
has_foreign_data_wrapper_privilege(fdw: oid, privilege: STRING) → BOOL当前用户是否拥有外部数据包装程序权限。
has_foreign_data_wrapper_privilege(user: STRING, fdw: STRING, privilege: STRING) → BOOL用户是否拥有外部数据包装程序权限。
has_foreign_data_wrapper_privilege(user: STRING, fdw: oid, privilege: STRING) → BOOL用户是否拥有外部数据包装程序权限。
has_foreign_data_wrapper_privilege(user: oid, fdw: STRING, privilege: STRING) → BOOL用户是否拥有外部数据包装程序权限。
has_foreign_data_wrapper_privilege(user: oid, fdw: oid, privilege: STRING) → BOOL用户是否拥有外部数据包装程序权限。
has_function_privilege(function: STRING, privilege: STRING) → BOOL当前用户是否拥有函数权限。
has_function_privilege(function: oid, privilege: STRING) → BOOL当前用户是否拥有函数权限。
has_function_privilege(user: STRING, function: STRING, privilege: STRING) → BOOL用户是否拥有函数权限。
has_function_privilege(user: STRING, function: oid, privilege: STRING) → BOOL用户是否拥有函数权限。
has_function_privilege(user: oid, function: STRING, privilege: STRING) → BOOL用户是否拥有函数权限。
has_function_privilege(user: oid, function: oid, privilege: STRING) → BOOL用户是否拥有函数权限。
has_language_privilege(language: STRING, privilege: STRING) → BOOL当前用户是否拥有语言权限。
has_language_privilege(language: oid, privilege: STRING) → BOOL当前用户是否拥有语言权限。
has_language_privilege(user: STRING, language: STRING, privilege: STRING) → BOOL用户是否拥有语言权限。
has_language_privilege(user: STRING, language: oid, privilege: STRING) → BOOL用户是否拥有语言权限。
has_language_privilege(user: oid, language: STRING, privilege: STRING) → BOOL用户是否拥有语言权限。
has_language_privilege(user: oid, language: oid, privilege: STRING) → BOOL用户是否拥有语言权限。
has_schema_privilege(schema: STRING, privilege: STRING) → BOOL当前用户是否拥有 schema 权限。
has_schema_privilege(schema: oid, privilege: STRING) → BOOL当前用户是否拥有 schema 权限。
has_schema_privilege(user: STRING, schema: STRING, privilege: STRING) → BOOL用户是否拥有 schema 权限。
has_schema_privilege(user: STRING, schema: oid, privilege: STRING) → BOOL用户是否拥有 schema 权限。
has_schema_privilege(user: oid, schema: STRING, privilege: STRING) → BOOL用户是否拥有 schema 权限。
has_schema_privilege(user: oid, schema: oid, privilege: STRING) → BOOL用户是否拥有 schema 权限。
has_sequence_privilege(sequence: STRING, privilege: STRING) → BOOL当前用户是否拥有序列权限。
has_sequence_privilege(sequence: oid, privilege: STRING) → BOOL当前用户是否拥有序列权限。
has_sequence_privilege(user: STRING, sequence: STRING, privilege: STRING) → BOOL用户是否拥有序列权限。
has_sequence_privilege(user: STRING, sequence: oid, privilege: STRING) → BOOL用户是否拥有序列权限。
has_sequence_privilege(user: oid, sequence: STRING, privilege: STRING) → BOOL用户是否拥有序列权限。
has_sequence_privilege(user: oid, sequence: oid, privilege: STRING) → BOOL用户是否拥有序列权限。
has_server_privilege(server: STRING, privilege: STRING) → BOOL当前用户是否拥有外部服务器的权限。
has_server_privilege(server: oid, privilege: STRING) → BOOL当前用户是否拥有外部服务器的权限。
has_server_privilege(user: STRING, server: STRING, privilege: STRING) → BOOL用户是否拥有外部服务器的权限。
has_server_privilege(user: STRING, server: oid, privilege: STRING) → BOOL用户是否拥有外部服务器的权限。
has_server_privilege(user: oid, server: STRING, privilege: STRING) → BOOL用户是否拥有外部服务器的权限。
has_server_privilege(user: oid, server: oid, privilege: STRING) → BOOL用户是否拥有外部服务器的权限。
has_table_privilege(table: STRING, privilege: STRING) → BOOL当前用户是否拥有表的权限。
has_table_privilege(table: oid, privilege: STRING) → BOOL当前用户是否拥有表的权限。
has_table_privilege(user:STRING,table:STRING,privilege: STRING) → BOOL用户是否拥有表的权限。
has_table_privilege(user: STRING, table: oid, privilege: STRING) → BOOL用户是否拥有表的权限。
has_table_privilege(user: oid, table: STRING, privilege: STRING) → BOOL用户是否拥有表的权限。
has_table_privilege(user: oid, table: oid, privilege: STRING) → BOOL用户是否拥有表的权限。
has_tablespace_privilege(tablespace:STRING,privilege: STRING) → BOOL当前用户是否拥有表空间的权限。
has_tablespace_privilege(tablespace: oid, privilege: STRING) → BOOL当前用户是否拥有表空间的权限。
has_tablespace_privilege(user: STRING, tablespace: STRING, privilege: STRING) → BOOL用户是否拥有表空间的权限。
has_tablespace_privilege(user: STRING, tablespace: oid, privilege: STRING) → BOOL用户是否拥有表空间的权限。
has_tablespace_privilege(user: oid, tablespace: STRING, privilege: STRING) → BOOL用户是否拥有表空间的权限。
has_tablespace_privilege(user: oid, tablespace: oid, privilege: STRING) → BOOL用户是否拥有表空间的权限。
has_type_privilege(type: STRING, privilege: STRING) → BOOL当前用户是否拥有类型的权限。
has_type_privilege(type: oid, privilege: STRING) → BOOL当前用户是否拥有类型的权限。
has_type_privilege(user:STRING,type: STRING, privilege: STRING) → BOOL用户是否拥有类型的权限。
has_type_privilege(user: STRING, type: oid, privilege: STRING) → BOOL用户是否拥有类型的权限。
has_type_privilege(user: oid, type: STRING, privilege: STRING) → BOOL用户是否拥有类型的权限。
has_type_privilege(user: oid, type: oid, privilege: STRING) → BOOL用户是否拥有类型的权限。
oid(arg1: INT2) → oid将整数转换为 OID。
oid(arg1: INT4) → oid将整数转换为 OID。
oid(arg1: INT8) → oid将整数转换为 OID。
pg_sleep(seconds: FLOAT4) → BOOL使当前会话的进程在接下来指定的秒数内进入休眠状态。参数 seconds 是双精度浮点数,允许指定小数级别的秒数延迟。
pg_sleep(seconds: FLOAT8) → BOOL使当前会话的进程在接下来指定的秒数内进入休眠状态。参数 seconds 是双精度浮点数,允许指定小数级别的秒数延迟。

聚合函数

说明

  • 避免 AVGSUM 函数的计算结果超过函数支持的最大范围。
  • 聚合查询与 GROUP BY 连用时,避免 GROUP BY 后的结果集行数过大。
函数 → 返回值描述
array_agg(arg1: BOOL) → BOOL[]将选定值聚合到数组中。
array_agg(arg1: bytes) → bytes[]将选定值聚合到数组中。
array_agg(arg1: date) → date[]将选定值聚合到数组中。
array_agg(arg1: decimal) →decimal[]将选定值聚合到数组中。
array_agg(arg1: FLOAT4) → FLOAT4[]将选定值聚合到数组中。
array_agg(arg1: FLOAT8) → FLOAT8[]将选定值聚合到数组中。
array_agg(arg1: INET) → INET[]将选定值聚合到数组中。
array_agg(arg1: INT2) → INT2[]将选定值聚合到数组中。
array_agg(arg1: INT4) → INT4[]将选定值聚合到数组中。
array_agg(arg1: INT8) → INT8[]将选定值聚合到数组中。
array_agg(arg1: interval) → interval[]将选定值聚合到数组中。
array_agg(arg1: STRING) → STRING[]将选定值聚合到数组中。
array_agg(arg1: time) → time[]将选定值聚合到数组中。
array_agg(arg1: timestamp) → timestamp[]将选定值聚合到数组中。
array_agg(arg1: timestamptz) → timestamptz[]将选定值聚合到数组中。
array_agg(arg1: UUID) → UUID[]将选定值聚合到数组中。
array_agg(arg1: oid) → oid[]将选定值聚合到数组中。
array_agg(arg1: timetz) → timetz[]将选定值聚合到数组中。
array_agg(arg1: varbit) → varbit[]将选定值聚合到数组中。
avg(arg1: decimal) → decimal计算选定值的平均值。
avg(arg1: float4) → float8计算选定值的平均值。
avg(arg1: float8) → float8计算选定值的平均值。
avg(arg1: INT2) → DECIMAL计算选定值的平均值。
avg(arg1: INT4) → DECIMAL计算选定值的平均值。
avg(arg1: INT8) → DECIMAL计算选定值的平均值。
avg(arg1: interval) → interval计算选定值的平均值。
bit_and(arg1: int2) → int8计算所有非空输入值的按位“与”操作结果,如果没有,则为 null。
bit_and(arg1: int4) → int8计算所有非空输入值的按位“与”操作结果,如果没有,则为 null。
bit_and(arg1: int8) → int8计算所有非空输入值的按位“与”操作结果,如果没有,则为 null。
bit_or(arg1: int2) → int8计算所有非空输入值的按位“或”操作结果,如果没有,则为 null。
bit_or(arg1: int4) → int8计算所有非空输入值的按位“或”操作结果,如果没有,则为 null。
bit_or(arg1: int8) → int8计算所有非空输入值的按位“或”操作结果,如果没有,则为 null。
BOOL_and(arg1: BOOL) → BOOL计算集合中所有 BOOL 值的“与”操作的结果。
BOOL_or(arg1: BOOL) → BOOL计算集合中所有 BOOL 值的“或”操作的结果。
concat_agg(arg1: bytes) → bytes连接所有选定值。
concat_agg(arg1: STRING) → STRING连接所有选定值。
corr(arg1: FLOAT4, arg2: FLOAT4) → FLOAT8计算所选值的相关系数。
corr(arg1: FLOAT4, arg2: FLOAT8) → FLOAT8计算所选值的相关系数。
corr(arg1: FLOAT8, arg2: FLOAT4) → FLOAT8计算所选值的相关系数。
corr(arg1: FLOAT8, arg2: FLOAT8) → FLOAT8计算所选值的相关系数。
corr(arg1: FLOAT4, arg2: INT2) → FLOAT8计算所选值的相关系数。
corr(arg1: FLOAT4, arg2: INT4) → FLOAT8计算所选值的相关系数。
corr(arg1: FLOAT4, arg2: INT8) → FLOAT8计算所选值的相关系数。
corr(arg1: FLOAT8, arg2: INT2) → FLOAT8计算所选值的相关系数。
corr(arg1: FLOAT8, arg2: INT4) → FLOAT8计算所选值的相关系数。
corr(arg1: FLOAT8, arg2: INT8) → FLOAT8计算所选值的相关系数。
corr(arg1: INT2, arg2: FLOAT4) → FLOAT8计算所选值的相关系数。
corr(arg1: INT2, arg2: FLOAT8) → FLOAT8计算所选值的相关系数。
corr(arg1: INT4, arg2: FLOAT4) → FLOAT8计算所选值的相关系数。
corr(arg1: INT4, arg2: FLOAT8) → FLOAT8计算所选值的相关系数。
corr(arg1: INT8, arg2: FLOAT4) → FLOAT8计算所选值的相关系数。
corr(arg1: INT8, arg2: FLOAT8) → FLOAT8计算所选值的相关系数。
corr(arg1: INT2, arg2: INT2) → FLOAT8计算所选值的相关系数。
corr(arg1: INT2, arg2: INT4) → FLOAT8计算所选值的相关系数。
corr(arg1: INT2, arg2: INT8) → FLOAT8计算所选值的相关系数。
corr(arg1: INT4, arg2: INT2) → FLOAT8计算所选值的相关系数。
corr(arg1: INT4, arg2: INT4) → FLOAT8计算所选值的相关系数。
corr(arg1: INT4, arg2: INT8) → FLOAT8计算所选值的相关系数。
corr(arg1: INT8, arg2: INT2) → FLOAT8计算所选值的相关系数。
corr(arg1: INT8, arg2: INT4) → FLOAT8计算所选值的相关系数。
corr(arg1: INT8, arg2: INT8) → FLOAT8计算所选值的相关系数。
count(arg1: anyelement) → INT8计算选定元素的数目。
count_rows() → INT8计算行数。
every(arg1: BOOL) → BOOL计算所有选定值的“与”操作的布尔值结果。
JSON_agg(arg1: anyelement) → jsonb将值聚合为 JSON 或 jsonb 数组。
jsonb_agg(arg1: anyelement) → jsonb将值聚合为 JSON 或 jsonb 数组。
MAX(arg1: BOOL) → BOOL标识选定的最大值。
MAX(arg1: bytes) → bytes标识选定的最大值。
MAX(arg1: date) → date标识选定的最大值。
MAX(arg1: decimal) → decimal标识选定的最大值。
MAX(arg1: FLOAT4) → FLOAT4标识选定的最大值。
MAX(arg1: FLOAT8) → FLOAT8标识选定的最大值。
MAX(arg1: INET) → INET标识选定的最大值。
MAX(arg1: INT2) → INT2标识选定的最大值。
MAX(arg1: INT4) → INT4标识选定的最大值。
MAX(arg1: INT8) → INT8标识选定的最大值。
MAX(arg1: interval) → interval标识选定的最大值。
MAX(arg1: STRING) → STRING标识选定的最大值。
MAX(arg1: time) → time标识选定的最大值。
MAX(arg1: timestamp) → timestamp标识选定的最大值。
MAX(arg1: timestamptz) → timestamptz标识选定的最大值。
MAX(arg1: UUID) → UUID标识选定的最大值。
MAX(arg1: jsonb) → jsonb标识选定的最大值。
MAX(arg1: oid) → oid标识选定的最大值。
MAX(arg1: timetz) → timetz标识选定的最大值。
MAX(arg1: varbit) → varbit标识选定的最大值。
min(arg1: BOOL) → BOOL标识选定的最小值。
min(arg1: bytes) → bytes标识选定的最小值。
min(arg1: date) → date标识选定的最小值。
min(arg1: decimal) → decimal标识选定的最小值。
min(arg1: FLOAT4) → FLOAT4标识选定的最小值。
min(arg1: FLOAT8) → FLOAT8标识选定的最小值。
min(arg1: INET) → INET标识选定的最小值。
min(arg1: INT2) → INT2标识选定的最小值。
min(arg1: INT4) → INT4标识选定的最小值。
min(arg1: INT8) → INT8标识选定的最小值。
min(arg1: interval) → interval标识选定的最小值。
min(arg1: STRING) → STRING标识选定的最小值。
min(arg1: time) → time标识选定的最小值。
min(arg1: timestamp) → timestamp标识选定的最小值。
min(arg1: timestamptz) → timestamptz标识选定的最小值。
min(arg1: UUID) → UUID标识选定的最小值。
min(arg1: jsonb) → jsonb标识选定的最小值。
min(arg1: oid) → oid标识选定的最小值。
min(arg1: timetz) → timetz标识选定的最小值。
min(arg1: varbit) → varbit标识选定的最小值。
sqrdiff(arg1: decimal) → decimal计算所选值平均值的平方差之和。
sqrdiff(arg1: FLOAT4) → FLOAT8计算所选值平均值的平方差之和。
sqrdiff(arg1: FLOAT8) → FLOAT8计算所选值平均值的平方差之和。
sqrdiff(arg1: INT2) → decimal计算所选值平均值的平方差之和。
sqrdiff(arg1: INT4) → decimal计算所选值平均值的平方差之和。
sqrdiff(arg1: INT8) → decimal计算所选值平均值的平方差之和。
stddev(arg1: decimal) → decimal计算选定值的标准偏差。
stddev(arg1: FLOAT4) → FLOAT8计算选定值的标准偏差。
stddev(arg1: FLOAT8) → FLOAT8计算选定值的标准偏差。
stddev(arg1: INT2) → decimal计算选定值的标准偏差。
stddev(arg1: INT4) → decimal计算选定值的标准偏差。
stddev(arg1: INT8) → decimal计算选定值的标准偏差。
stddev_samp(arg1: decimal) → decimal计算所选值的标准偏差。
stddev_samp(arg1: FLOAT4) → FLOAT8计算所选值的标准偏差。
stddev_samp(arg1: FLOAT8) → FLOAT8计算所选值的标准偏差。
stddev_samp(arg1: INT2) → decimal计算所选值的标准偏差。
stddev_samp(arg1: INT4) → decimal计算所选值的标准偏差。
stddev_samp(arg1: INT8) → decimal计算所选值的标准偏差。
STRING_agg(arg1: bytes, arg2: bytes) → bytes使用提供的分隔符连接所有选定值。
STRING_agg(arg1: STRING, arg2: STRING) → STRING使用提供的分隔符连接所有选定值。
SUM(arg1: decimal) → decimal计算选定值的总和。
SUM(arg1: FLOAT4) → FLOAT8计算选定值的总和。
SUM(arg1: FLOAT8) → FLOAT8计算选定值的总和。
SUM(arg1: INT2) → decimal计算选定值的总和。
SUM(arg1: INT4) → decimal计算选定值的总和。
SUM(arg1: INT8) → decimal计算选定值的总和。
SUM(arg1: interval) → interval计算选定值的总和。
SUM_INT(arg1: INT2) → INT8计算选定值的总和。
SUM_INT(arg1: INT4) → INT8计算选定值的总和。
SUM_INT(arg1: INT8) → INT8计算选定值的总和。
variance(arg1: decimal) → decimal计算选定值的方差。
variance(arg1: FLOAT4) → FLOAT8计算选定值的方差。
variance(arg1: FLOAT8) → FLOAT8计算选定值的方差。
variance(arg1: INT2) → decimal计算选定值的方差。
variance(arg1: INT4) → decimal计算选定值的方差。
variance(arg1: INT8) → decimal计算选定值的方差。
xor_agg(arg1: bytes) → bytes计算选定值的按位异或。
xor_agg(arg1: INT2) → INT8计算选定值的按位异或。
xor_agg(arg1: INT4) → INT8计算选定值的按位异或。
xor_agg(arg1: INT8) → INT8计算选定值的按位异或。
matching(val: INT2, excludeRule: INT8, lowerBound: decimal, upperBound: decimal, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false。参数说明:
- excludeRule:条件判断时是否包含上限、下限。取值 0(均包含)、1(只包含上限)、2(只包含下限)、3(均不包含)
- percentage:百分比。若预设百分比为 90%,则该项填入 90
matching(val: INT4, excludeRule: INT8, lowerBound: decimal, upperBound: decimal, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false。参数说明:
- excludeRule:条件判断时是否包含上限、下限。取值 0(均包含)、1(只包含上限)、2(只包含下限)、3(均不包含)
- percentage:百分比。若预设百分比为 90%,则该项填入 90
matching(val: INT8, excludeRule: INT8, lowerBound: decimal, upperBound: decimal, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false。参数说明:
- excludeRule:条件判断时是否包含上限、下限。取值 0(均包含)、1(只包含上限)、2(只包含下限)、3(均不包含)
- percentage:百分比。若预设百分比为 90%,则该项填入 90
matching(val: FLOAT4, excludeRule: INT8, lowerBound: decimal, upperBound: decimal, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: FLOAT8, excludeRule: INT8, lowerBound: decimal, upperBound: decimal, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: decimal, excludeRule: INT8, lowerBound: decimal, upperBound: decimal, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: INT2, excludeRule: INT8, lowerBound: STRING, upperBound: decimal, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: INT4, excludeRule: INT8, lowerBound: STRING, upperBound: decimal, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: INT8, excludeRule: INT8, lowerBound: STRING, upperBound: decimal, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: FLOAT4, excludeRule: INT8, lowerBound: STRING, upperBound: decimal, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: FLOAT8, excludeRule: INT8, lowerBound: STRING, upperBound: decimal, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: decimal, excludeRule: INT8, lowerBound: STRING, upperBound: decimal, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: INT2, excludeRule: INT8, lowerBound: decimal, upperBound: STRING, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: INT4, excludeRule: INT8, lowerBound: decimal, upperBound: STRING, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: INT8, excludeRule: INT8, lowerBound: decimal, upperBound: STRING, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: FLOAT4, excludeRule: INT8, lowerBound: decimal, upperBound: STRING, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: FLOAT8, excludeRule: INT8, lowerBound: decimal, upperBound: STRING, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
matching(val: decimal, excludeRule: INT8, lowerBound: decimal, upperBound: STRING, percentage: INT8) → BOOL满足条件的值的数量与总数量的比值大于预先设定的百分比,返回 true,否则返回 false
interpolate(method, mode)补值函数,需要与 time_bucket_gapfill() 配合使用,补值结果类型与原始值类型一致。参数说明:
- method:补值算法,只支持聚合函数,且数据类型为数字。
- mode:补值模式,取值包括 constant(常量值)、prev(前值)、next(后值)、linear(线性)、null(null)。

窗口函数

函数 → 返回值描述
cume_dist() → FLOAT8计算当前行的相对秩:(当前行前面或与当前行对等的行数)/(总行数)。
dense_rank() → INT8计算当前行的秩(不带间隙)。此函数计算对等组。
first_value(val: BOOL) → BOOL返回在窗口的第一行处计算的值。
first_value(val: bytes) → bytes返回在窗口的第一行处计算的值。
first_value(val: date) → date返回在窗口的第一行处计算的值。
first_value(val: decimal) → decimal返回在窗口的第一行处计算的值。
first_value(val: FLOAT4) → FLOAT4返回在窗口的第一行处计算的值。
first_value(val: FLOAT8) → FLOAT8返回在窗口的第一行处计算的值。
first_value(val: INET) → INET返回在窗口的第一行处计算的值。
first_value(val: INT2) → INT2返回在窗口的第一行处计算的值。
first_value(val: INT4) → INT4返回在窗口的第一行处计算的值。
first_value(val: INT8) → INT8返回在窗口的第一行处计算的值。
first_value(val: interval) → interval返回在窗口的第一行处计算的值。
first_value(val: STRING) → STRING返回在窗口的第一行处计算的值。
first_value(val: time) → time返回在窗口的第一行处计算的值。
first_value(val: timestamp) → timestamp返回在窗口的第一行处计算的值。
first_value(val: timestamptz) → timestamptz返回在窗口的第一行处计算的值。
first_value(val: UUID) → UUID返回在窗口的第一行处计算的值。
first_value(val: jsonb) → jsonb返回在窗口的第一行处计算的值。
first_value(val: oid) → oid返回在窗口的第一行处计算的值。
first_value(val: timetz) → timetz返回在窗口的第一行处计算的值。
first_value(val: varbit) → varbit返回在窗口的第一行处计算的值。
lag(val: BOOL) → BOOL返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: BOOL, n: INT8) → BOOL返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: BOOL, n: INT8, default: BOOL) → BOOL返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: bytes) → bytes返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: bytes, n: INT8) → bytes返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: bytes, n: INT8, default: bytes) → bytes返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: date) → date返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: date, n: INT8) → date返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: date, n: INT8, default: date) → date返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: decimal) → decimal返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: decimal, n: INT8) → decimal返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: decimal, n: INT8, default: decimal) → decimal返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: FLOAT4) → FLOAT8返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: FLOAT8) → FLOAT8返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: FLOAT4, n: INT8) → FLOAT8返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: FLOAT8, n: INT8) → FLOAT8返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: FLOAT4, n: INT8, default: FLOAT4) → FLOAT8返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: FLOAT8, n: INT8, default: FLOAT8) → FLOAT8返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: INET) → INET返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: INET, n: INT8) → INET返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: INET, n: INT8, default: INET) → INET返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: INT2) → INT8返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: INT4) → INT8返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: INT8) → INT8返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: INT2, n: INT8) → INT8返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: INT4, n: INT8) → INT8返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: INT8, n: INT8) → INT8返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: INT2, n: INT8, default: INT2) → INT8返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: INT4, n: INT8, default: INT4) → INT8返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: INT8, n: INT8, default: INT8) → INT8返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: interval) → interval返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: interval, n: INT8) → interval返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: interval, n: INT8, default: interval) → interval返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: STRING) → STRING返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: STRING, n: INT8) → STRING返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: STRING, n: INT8, default: STRING) → STRING返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: time) → time返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: time, n: INT8) → time返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: time, n: INT8, default: time) → time返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: timestamp) → timestamp返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: timestamp, n: INT8) → timestamp返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: timestamp, n: INT8, default: timestamp) → timestamp返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: timestamptz) → timestamptz返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: timestamptz, n: INT8) → timestamptz返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: timestamptz, n: INT8, default: timestamptz) → timestamptz返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: UUID) → UUID返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: UUID, n: INT8) → UUID返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: UUID, n: INT8, default: UUID) → UUID返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: jsonb) → jsonb返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: jsonb, n: INT8) → jsonb返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: jsonb, n: INT8, default: jsonb) → jsonb返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: oid) → oid返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: oid, n: INT8) → oid返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: oid, n: INT8, default: oid) → oid返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: timetz) → timetz返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: timetz, n: INT8) → timetz返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: timetz, n: INT8, default: timetz) → timetz返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lag(val: varbit) → varbit返回在当前行的分区中的前一行计算的 val。如果没有这样的行,则返回 null。
lag(val: varbit, n: INT8) → varbit返回在其分区内当前行之前 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lag(val: varbit, n: INT8, default: varbit) → varbit返回在其分区内当前行之前 n 行的行上计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
last_value(val: BOOL) → BOOL返回在窗口内的最后一行计算的值。
last_value(val: bytes) → bytes返回在窗口内的最后一行计算的值。
last_value(val: date) → date返回在窗口内的最后一行计算的值。
last_value(val: decimal) → decimal返回在窗口内的最后一行计算的值。
last_value(val: FLOAT4) → FLOAT4返回在窗口内的最后一行计算的值。
last_value(val: FLOAT8) → FLOAT8返回在窗口内的最后一行计算的值。
last_value(val: INET) → INET返回在窗口内的最后一行计算的值。
last_value(val: INT2) → INT2返回在窗口内的最后一行计算的值。
last_value(val: INT4) → INT4返回在窗口内的最后一行计算的值。
last_value(val: INT8) → INT8返回在窗口内的最后一行计算的值。
last_value(val: interval) → interval返回在窗口内的最后一行计算的值。
last_value(val: STRING) → STRING返回在窗口内的最后一行计算的值。
last_value(val: time) → time返回在窗口内的最后一行计算的值。
last_value(val: timestamp) → timestamp返回在窗口内的最后一行计算的值。
last_value(val: timestamptz) → timestamptz返回在窗口内的最后一行计算的值。
last_value(val: UUID) → UUID返回在窗口内的最后一行计算的值。
last_value(val: jsonb) → jsonb返回在窗口内的最后一行计算的值。
last_value(val: oid) → oid返回在窗口内的最后一行计算的值。
last_value(val: timetz) → timetz返回在窗口内的最后一行计算的值。
last_value(val: varbit) → varbit返回在窗口内的最后一行计算的值。
lead(val: BOOL) → BOOL返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: BOOL, n: INT8) → BOOL返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: BOOL, n: INT8, default: BOOL) → BOOL返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: bytes) → bytes返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: bytes, n: INT8) → bytes返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: bytes, n: INT8, default: bytes) → bytes返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: date) → date返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: date, n: INT8) → date返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: date, n: INT8, default: date) → date返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: decimal) → decimal返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: decimal, n: INT8) → decimal返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: decimal, n: INT8, default: decimal) → decimal返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: FLOAT4) → FLOAT8返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: FLOAT8) → FLOAT8返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: FLOAT4, n: INT8) → FLOAT8返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: FLOAT8, n: INT8) → FLOAT8返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: FLOAT4, n: INT8, default: FLOAT4) → FLOAT8返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: FLOAT8, n: INT8, default: FLOAT8) → FLOAT8返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: INET) → INET返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: INET, n: INT8) → INET返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: INET, n: INT8, default: INET) → INET返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: INT2) → INT8返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: INT4) → INT8返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: INT8) → INT8返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: INT2, n: INT8) → INT8返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: INT4, n: INT8) → INT8返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: INT8, n: INT8) → INT8返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: INT2, n: INT8, default: INT2) → INT8返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: INT4, n: INT8, default: INT4) → INT8返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: INT8, n: INT8, default: INT8) → INT8返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: interval) → interval返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: interval, n: INT8) → interval返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: interval, n: INT8, default: interval) → interval返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: STRING) → STRING返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: STRING, n: INT8) → STRING返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: STRING, n: INT8, default: STRING) → STRING返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: time) → time返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: time, n: INT8) → time返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: time, n: INT8, default: time) → time返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: timestamp) → timestamp返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: timestamp, n: INT8) → timestamp返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: timestamp, n: INT8, default: timestamp) → timestamp返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: timestamptz) → timestamptz返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: timestamptz, n: INT8) → timestamptz返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: timestamptz, n: INT8, default: timestamptz) → timestamptz返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: UUID) → UUID返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: UUID, n: INT8) → UUID返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: UUID, n: INT8, default: UUID) → UUID返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: jsonb) → jsonb返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: jsonb, n: INT8) → jsonb返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: jsonb, n: INT8, default: jsonb) → jsonb返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: oid) → oid返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: oid, n: INT8) → oid返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: oid, n: INT8, default: oid) → oid返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: timetz) → timetz返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: timetz, n: INT8) → timetz返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: timetz, n: INT8, default: timetz) → timetz返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
lead(val: varbit) → varbit返回在当前行分区内的下一行计算的 val。如果没有这样的行,则返回 null。
lead(val: varbit, n: INT8) → varbit返回在其分区内当前行后面 n 行的行上计算的 val。如果没有这样的行,则返回空值。n 是针对当前行计算的。
lead(val: varbit, n: INT8, default: varbit) → varbit返回在其分区内当前行后面 n 行处计算的 val。如果没有,则返回默认值(必须与 val 类型相同)。n 和 default 都是根据当前行计算的。
nth_value(val: BOOL, n: INT8) → BOOL返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: bytes, n: INT8) → bytes返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: date, n: INT8) → date返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: decimal, n: INT8) → decimal返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: FLOAT4, n: INT8) → FLOAT8返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: FLOAT8, n: INT8) → FLOAT8返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: INET, n: INT8) → INET返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: INT2, n: INT8) → INT8返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: INT4, n: INT8) → INT8返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: INT8, n: INT8) → INT8返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: interval, n: INT8) → interval返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: STRING, n: INT8) → STRING返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: time, n: INT8) → time返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: timestamp, n: INT8) → timestamp返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: timestamptz, n: INT8) → timestamptz返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: UUID, n: INT8) → UUID返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: jsonb, n: INT8) → jsonb返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: oid, n: INT8) → oid返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: timetz, n: INT8) → timetz返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
nth_value(val: varbit, n: INT8) → varbit返回在窗口内的第 n 行(从 1 开始计算)处计算的 val。如果没有这样的行,则返回 null。
ntile(n: INT2) → INT8计算一个从 1 到 n 的整数,将分区尽可能等分。
ntile(n: INT4) → INT8计算一个从 1 到 n 的整数,将分区尽可能等分。
ntile(n: INT8) → INT8计算一个从 1 到 n 的整数,将分区尽可能等分。
percent_rank() → FLOAT8计算当前行的相对秩:(秩 -1)/(总行数 -1)。
rank() → INT8计算具有间隙的当前行的秩与第一个对等行的行数相同。
row_number() → INT8计算其分区内当前行的数目,从 1 开始计算。