函数
版本覆盖矩阵PostgreSQL 版本定义:18
英文手册覆盖始于 PostgreSQL 7.1. 来源历史与运行验证各自保留独立版本边界。
当前阅读 PG 18·选择有来源记录的版本
COALESCE函数返回参数中第一个不为 null 的值。只有所有参数都为 null 时,才返回 null。它常用于在检索数据以供显示时,用默认值替换 null 值。例如:
GREATEST和LEAST函数从由任意数量的表达式组成的列表中选取最大值或最小值。这些表达式都必须能转换为同一个数据类型,该类型将作为结果类型(详情参见第 10.5 节)。
返回一个位掩码,指示哪些GROUP BY表达式未包含在当前分组集中。分配比特位时,最右侧参数对应最低有效位;如果相应表达式包含在生成当前结果行的分组集的分组条件中,该位为 0,否则为 1。
如果将 SQL/JSON path_expression 应用于 context_item 后产生了任何项,则返回 true,否则返回 false。
返回将 SQL/JSON path_expression 应用于 context_item 的结果。
下面更详细地说明每个语法元素。
返回将 SQL/JSON path_expression 应用于 context_item 的结果。
GREATEST和LEAST函数从由任意数量的表达式组成的列表中选取最大值或最小值。这些表达式都必须能转换为同一个数据类型,该类型将作为结果类型(详情参见第 10.5 节)。
当value1和value2相等时,NULLIF返回 null。否则它返回value1。这可以用于执行前文给出的COALESCE示例的逆操作:
函数xmlexists对一个 XPath 1.0 表达式(第一个参数)求值,以传递的XML值作为其上下文项。如果求值结果产生一个空节点集,该函数返回false,如果产生任何其他值,则返回true。如果任何参数为空,则函数返回null。作为上下文项传递的非空值必须是一个XML文档,而不是内容片段或任何非XML值。
xmltable表达式根据给定的 XML 值、用于提取行的 XPath 过滤器和一组列定义生成一个表。虽然它在语法上类似于函数,但它只能作为一个表出现在查询的FROM子句中。
创建文本形式的缩写显示格式。(结果与inet输出函数产生的结果相同;只有与显式类型转换为text的结果相比时,才称为“缩写形式”。由于历史原因,后一种转换从不省略网络掩码部分。)
绝对值
构造一个aclitem数组,保存类型为type、属于 OID 为ownerId的角色的对象的默认访问权限。当对象的ACL条目为空值时,会采用这些访问权限。(默认访问权限见第 5.8 节。)type参数必须为以下值之一:'c' 表示COLUMN,'r' 表示TABLE和类似表的对象,'s' 表示SEQUENCE,'d' 表示DATABASE,'f' 表示FUNCTION或PROCEDURE,'l' 表示LANGUAGE,'L' 表示LARGE OBJECT,'n' 表示SCHEMA,'p' 表示PARAMETER,'t' 表示TABLESPACE,'F' 表示FOREIGN DATA WRAPPER,'S' 表示FOREIGN SERVER,'T' 表示TYPE或DOMAIN。
以行集的形式返回aclitem数组。如果被授权者是伪角色 PUBLIC,则在grantee列中用零表示。每项授予的权限表示为SELECT、INSERT等(完整列表见表 5.1)。注意,每项权限都会拆成单独的一行,因此privilege_type列中只会出现一个关键字。
反余弦,结果为弧度
反余弦,结果为度数
反双曲余弦
将两个参数相减,生成一个使用年和月而不是只用日的“符号化”结果
从非空输入值中返回任意一个值。
计算面积。适用于 box、path、circle。path 输入必须封闭,否则返回NULL。同样,如果 path 是自交叉的,结果可能是没有意义的。
将所有输入值,包括空值,收集到一个数组中。
向一个数组的末端追加一个元素(等同于 anycompatiblearray || anycompatible 操作符)。
连接两个数组(等同于 anycompatiblearray || anycompatiblearray 操作符)。
返回数组维度的文本表示形式。
返回用给定值的副本填充的数组,各维的长度由第二个参数指定。可选的第三个参数提供各维的下界值(默认均为1)。
返回请求的数组维度的长度。(对于空或缺失的数组维度,返回NULL而不是0。)
返回请求的数组维度的下界。
返回数组的维度数。
返回第二个参数在数组中首次出现的下标;若不存在,则返回NULL。如果给出了第三个参数,则搜索从该下标开始。数组必须是一维的。比较是使用IS NOT DISTINCT FROM语义进行的,所以可以搜索NULL。
返回第二个参数在第一个参数所给数组中所有出现位置的下标数组。数组必须是一维的。使用IS NOT DISTINCT FROM语义完成比较,所以可以搜索NULL。只有当数组为NULL时才返回NULL;如果在数组中没有找到该值,则返回空数组。
在数组的开头添加一个元素(等同于anycompatible || anycompatiblearray操作符)。
从数组中移除与给定值相等的所有元素。数组必须是一维的。使用IS NOT DISTINCT FROM语义完成比较,所以可以删除NULL。
将等于第二个参数的每个数组元素替换为第三个参数。
反转数组的第一维。
从array中随机选取n个项并返回一个数组。n不能超过array第一维的长度。如果array是多维数组,则一个“项”是具有给定第一维下标的一个切片。
随机打乱数组的第一维。
对数组的第一维进行排序。排序顺序由数组元素类型的默认排序顺序决定;不过,如果元素类型支持排序规则,也可以通过给array参数添加COLLATE子句来指定要使用的排序规则。
将SQL数组转换为JSON数组。该行为与to_json相同,只是如果可选布尔参数为真,换行符将在顶级数组元素之间添加。
将每个数组元素转换为其文本表示,并将它们用delimiter字符串分隔连接起来。如果提供了null_string且不是NULL,则NULL数组条目将用该字符串表示;否则将被省略。另请参见string_to_array。
将文本字符串数组转换为tsvector。给定的字符串被直接用作词位,不经过进一步处理。数组元素不得为空字符串或NULL。
返回请求的数组维度的上界。
返回参数的第一个字符的数字代码。在UTF8编码中,返回该字符的Unicode 码点。在其他多字节编码中,该参数必须是一个ASCII字符。
反正弦,结果为弧度
反正弦,结果为度数
反双曲正弦
反正切,结果为弧度
y/x的反正切,结果为弧度
y/x的反正切,结果为度数
反正切,结果为度数
反双曲正切
计算所有非空输入值的平均值(算术平均值)。
计算所有非空输入值的按位与。
返回二进制字符串中被置位的位数(也称为“popcount”)。
返回字符串中的位数(8倍于octet_length)。
计算所有非空输入值的按位或。
计算所有非空输入值的按位异或。可用作一组无序的值集合的校验和。
如果全部非空输入值都为真则返回真,否则返回假。
如果任何非空输入值为真则返回真,否则返回假。
计算两个矩形框的边界框。
计算内接于圆的矩形框。
如果存在涵盖指定表块的页面范围摘要,则删除对应的 BRIN 索引元组。
扫描指定的BRIN索引以查找基表中当前尚未生成索引摘要的页面范围;对于任何这样的范围,它都通过扫描这些表页来创建一个新的摘要索引元组。返回插入到索引中的新页面范围摘要的数量。
对覆盖给定块的页面范围执行摘要(如果尚未摘要)。这类似于brin_summarize_new_values,区别在于它只处理包含给定表块编号的页面范围。
为地址的网络计算广播地址。
从string的开头和结尾移除仅由characters中字符(默认为空格)组成的最长字符串。
返回数组中元素的总数,如果数组为空则返回0。
根据排序规则对输入字符串执行大小写折叠。大小写折叠与大小写转换类似,但其目的是方便字符串的不区分大小写匹配,而大小写转换的目的是将字符串转换为特定的大小写形式。此函数只能在服务器编码为UTF8时使用。
立方根
大于或等于参数的最接近的整数
大于或等于参数的最接近的整数(与 ceil 相同)
计算中心点。适用于 box、circle。
返回字符串中的字符数。
返回字符串中的字符数。
返回给定代码的字符。在UTF8编码中该参数被视作一个Unicode 码点。在其他多字节编码中该参数必须指定一个ASCII字符。chr(0) 字符不被允许,因为文本数据类型不能存储这种字符。
计算包围矩形框的最小圆。
当前日期和时间(在语句执行期间变化);参见第 9.9.5 节
返回表列的注释,列由所属表的 OID 和列号指定。(obj_description不能用于表列,因为列没有自身的 OID。)
串接所有参数的文本表示。NULL 参数被忽略。
用分隔符串接除第一个参数外的所有参数。第一个参数用作分隔符字符串,不应为NULL。其他NULL参数将被忽略。
将表示编码src_encoding的文本的二进制字符串转换为编码dest_encoding的二进制字符串(适用的转换请参阅第 23.3.4 节)。
将表示编码src_encoding的文本的二进制字符串转换为数据库编码中的text。(适用的转换请参阅第 23.3.4 节)。
将text字符串(数据库编码)转换为编码dest_encoding中编码的二进制字符串。(适用的转换请参阅第 23.3.4 节)。
计算相关系数。
余弦,参数为弧度
余弦,参数为度数
双曲余弦
余切,参数为弧度
余切,参数为度数
计算输入行的数量。
计算总体协方差。
计算样本协方差。
计算二进制字符串的 CRC-32 值。
计算二进制字符串的 CRC-32C 值。
计算累积分布,也就是(位于假设行之前或与假设行同等的行数)/(总行数)。取值范围为 1/N 到 1。
返回当前数据库的名称。(SQL 标准将数据库称为“目录(catalogs)”,因此current_catalog是标准中的写法。)
返回当前数据库的名称。(SQL 标准将数据库称为“目录(catalogs)”,因此current_catalog是标准中的写法。)
当前日期;参见第 9.9.5 节
返回客户端提交的当前正在执行的查询文本(可能包含多条语句)。
这个等同于 current_user。
返回在搜索路径中的第一个模式的名称(如果搜索路径为空则返回空值)。这个模式将用于没有指定目标模式就创建的任何表或其他已命名对象。
返回当前有效搜索路径中所有模式名称的数组,按优先级排序。(当前search_path设置中不对应于已存在且可搜索的模式的项会被省略。)如果布尔参数为true,结果还会包含pg_catalog等隐式搜索的系统模式。
返回设置setting_name的当前值。如果没有这样的设置,current_setting将抛出一个错误,除非missing_ok被提供并且为true(在此情况下返回NULL)。这个函数对应于SQL命令SHOW。
一天中的当前时刻;参见第 9.9.5 节
当前日期和时间(当前事务开始时);参见第 9.9.5 节
返回当前执行上下文的用户名。
返回当前会话中最近一次针对该序列调用nextval所获得的值。(如果当前会话从未针对该序列调用过nextval,则会报错。)由于返回的是会话局部值,无论其他会话是否在当前会话调用之后执行过nextval,结果都是可预测的。
table_to_xml映射由参数table传递的命名表的内容。regclass类型接受使用常见标记标识表的字符串,包括可选的模式限定和双引号(详见第 8.19 节)。query_to_xml执行由参数query传递的查询并且映射结果集。cursor_to_xml从cursor指定的游标中取出指定数量的行。如果需要映射一个大型的表,我们推荐这种变体,因为每一个函数都是在内存中构建结果值的。
必须传入相同的参数,才能得到彼此匹配的 XML 数据映射和 XML 模式文档。
这些函数会忽略当前用户不可读的表。数据库范围的函数还会忽略当前用户没有USAGE(查找)权限的模式。
这些函数会忽略当前用户不可读的表。数据库范围的函数还会忽略当前用户没有USAGE(查找)权限的模式。
这些函数会忽略当前用户不可读的表。数据库范围的函数还会忽略当前用户没有USAGE(查找)权限的模式。
将一个 interval 加到 timestamp with time zone 上,并根据第三个参数命名的时区,或在省略该参数时根据当前TimeZone设置,计算时刻和夏令时调整。双参数形式等价于 timestamp with time zone + interval 操作符。
将输入按指定的间隔进行分箱(bin),对齐到指定的原点;参见第 9.9.3 节
获取时间戳子字段(等同于 extract);参见第 9.9.1 节
从一个 timestamp with time zone 中减去 interval,并根据第三个参数命名的时区,或在省略该参数时根据当前TimeZone设置,计算时刻和夏令时调整。双参数形式等价于 timestamp with time zone - interval 操作符。
截断到指定的精度;参见第 9.9.2 节
从文本表示中解码二进制数据;支持的format值与encode相同。
将弧度转换为角度
计算假设行的排名,没有空缺;此函数实际上对同等行组进行计数。
提取框的对角线作为线段(与 lseg(box)相同)。
计算圆的直径。
y/x 的整数商(向零截断)
将二进制数据编码成文本表示;支持的format值为:base64, escape, hex。
返回输入枚举类型的第一个值。
返回输入枚举类型的最后一个值。
将输入枚举类型的所有值作为一个有序的数组返回。
误差函数
互补误差函数(1 - erf(x),对较大输入不会损失精度)
这是标准 SQL 中与bool_and等价的函数。
指数函数(e的给定次幂)
获取时间戳子字段;参见第 9.9.1 节
阶乘
返回地址的地址族:4 对应 IPv4,6 对应 IPv6。
返回在窗口帧的第一行求得的value。
小于或等于参数的最接近整数
根据格式字符串对参数进行格式化;参见第 9.4.1 节。这个函数类似于C函数 sprintf。
返回由其类型OID和可能的类型修饰符标识的数据类型的SQL名称。如果没有已知的类型修饰符,则传递NULL值给类型修饰符。
伽马函数
最大公约数(能将两个输入数整除而无余数的最大正数);如果两个输入为零则返回 0;适用于 integer、bigint 和 numeric
生成一个版本 4(随机)的 UUID
从start到stop生成一系列的值,步长为step。step默认为1。
生成一个包含给定数组第dim维的有效下标的序列。
从二进制字符串中提取编号为 n 的位。
从二进制字符串中提取编号为 n 的字节。
返回当前默认文本检索配置的 OID(由default_text_search_config设置)。
将指定 GIN 索引的“待处理”列表中的条目批量移入主 GIN 数据结构,从而清理该列表。返回从待处理列表中移除的页数。如果参数是禁用fastupdate选项构建的 GIN 索引,则不会进行清理,结果为零,因为该索引没有待处理列表。有关待处理列表和fastupdate选项的详细信息,参见第 65.4.4.1 节和第 65.4.5 节。
用户是否对表的至少一列具有权限?如果拥有整个表的权限,或至少一列获得了该权限的列级授权,则返回真。允许的权限类型为SELECT、INSERT、UPDATE和REFERENCES。
用户对指定的表列有权限么?如果对整个表持有权限,或者对列授予了列级别的权限,则会成功。可以通过名称或属性编号(pg_attribute.attnum)指定列。允许的权限类型为SELECT、INSERT、UPDATE 和 REFERENCES。
用户对数据库有权限吗?允许的权限类型为CREATE、CONNECT、TEMPORARY 和 TEMP(相当于 TEMPORARY)。
用户是否具有外部数据包装器权限?唯一允许的权限类型为USAGE。
用户对函数有权限吗?唯一允许的权限类型是EXECUTE。
用户对语言有权限吗?唯一允许的权限类型是USAGE。
用户是否拥有大对象的权限?可用的权限类型是 SELECT 和 UPDATE。
用户是否具有配置参数的权限?参数名称不区分大小写。允许的权限类型为SET和ALTER SYSTEM。
用户对模式有权限吗?允许的权限类型是CREATE 和USAGE。
用户是否具有序列权限?允许的权限类型为USAGE、SELECT和UPDATE。
用户是否对外部服务器有权限?唯一允许的权限类型是USAGE。
用户对表有权限吗?允许的权限类型有SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER和MAINTAIN。
用户对表空间有权限吗?唯一允许的权限类型是CREATE。
用户对数据类型有权限吗?唯一允许的权限类型是 USAGE。当通过名称而不是OID指定类型时,允许的输入与regtype数据类型相同(参见第 8.19 节)。
计算框的垂直尺寸。
返回IP地址文本,忽略子网掩码。
为地址的网络计算主机掩码。
如果服务器在构建时启用了 ICU 支持,则返回一个表示 ICU 所使用的 Unicode 版本的字符串;否则返回 NULL。
返回当前客户端的 IP 地址;如果当前连接通过 Unix 域套接字建立,则返回NULL。
返回当前客户端的IP端口号,如果当前连接是通过Unix 域套接字则返回NULL。
计算包含两个给定网络的最小网络。
测试地址是否属于同一IP族。
返回服务器接受当前连接的IP地址,如果当前连接是通过Unix 域套接字则返回NULL。
返回服务器接受当前连接的IP端口号,如果当前连接是通过Unix 域套接字则返回NULL。
将每个单词的第一个字母转换为大写,其余字母转换为小写。单词是由非字母数字字符分隔的字母数字字符序列。
路径是否封闭?
范围为空吗?
测试日期是否有限(不是正负无穷)
路径是否开放?
将给定的text或bytea字符串表达式(采用 UTF8 编码)转换为 JSON 值。如果expression为 NULL,则返回SQL空值。如果指定了WITH UNIQUE,则expression不能包含重复的对象键。
将所有输入值(包括空值)收集到一个JSON数组中。根据to_json或to_jsonb将值转换为JSON。
将所有非空输入值收集到一个JSON数组中,跳过空值。根据to_json或to_jsonb将值转换为JSON。
从一系列value_expression参数或query_expression的结果构造 JSON 数组;后者必须是返回单列的 SELECT 查询。如果指定了ABSENT ON NULL,则忽略 NULL 值。使用query_expression时始终如此。
将顶级JSON数组展开为一组JSON值。
将顶级 JSON 数组展开为一组text值。
返回顶层JSON数组中的元素数量。
行为与json_array相同,只是它作为一个聚合函数,因此只接受一个 value_expression参数。如果指定了ABSENT ON NULL,则会省略所有 NULL 值。如果指定了ORDER BY,元素将按该顺序出现在数组中,而不是按输入顺序。
根据可变参数列表构建可能异构类型的JSON数组。每个参数都按照to_json或to_jsonb进行转换。
根据可变参数列表构建一个JSON对象。按照惯例,参数列表由交替的键和值组成。键参数会被强制转换为文本;值参数则按照to_json或to_jsonb进行转换。
将顶级JSON对象展开为一组键/值对。
将顶级 JSON 对象展开为一组键/值对。返回的 value 的类型为text。
在指定路径下提取JSON子对象。(这在功能上相当于#>操作符,但在某些情况下,将路径写成可变参数列表会更方便。)
将指定路径上的 JSON 子对象提取为text。(这在功能上等同于#>>操作符。)
根据给定的所有键值对构造 JSON 对象;如果没有给出键值对,则构造空对象。key_expression是定义JSON键的标量表达式,会被转换为text类型。它不能为NULL,其类型也不能具有到json的类型转换。如果指定了WITH UNIQUE KEYS,则key_expression不能重复。如果指定了ABSENT ON NULL,则value_expression求值为NULL的键值对会从输出中省略;如果指定了NULL ON NULL或省略了该子句,则保留该键,并将其值设为NULL。
将所有键/值对收集到一个JSON对象中。键参数强制转换为文本;值参数按照to_json或to_jsonb进行转换。值可以为空,但键不能(为空)。
将所有键/值对收集到一个JSON对象中。键参数强制转换为文本;值参数按照to_json或to_jsonb进行转换。key不能为空。如果value为空,则跳过该条目。
将所有键/值对收集到一个JSON对象中。键参数强制转换为文本;值参数按照to_json或to_jsonb进行转换。值可以为空,但键不能为空。如果存在重复键,则会抛出错误。
将所有键/值对收集到一个JSON对象中。键参数强制转换为文本;值参数按照to_json或to_jsonb进行转换。key不能为空。如果value为空,则跳过该条目。如果存在重复键,则会抛出错误。
返回顶级JSON对象中的键集合。
行为与json_object相同,只是它作为一个聚合函数,因此只接受一个 key_expression参数和一个 value_expression参数。
将顶级 JSON 对象展开为一行,其复合类型与base参数相同。系统会扫描该 JSON 对象,查找名称与输出行类型列名匹配的字段,并将其值插入输出中的对应列。(不对应任何输出列名的字段会被忽略。)在典型用法中,base的值就是NULL,这意味着凡是不匹配对象字段的输出列都会被填充为空值。但是,如果base不是NULL,那么其中包含的值将用于那些不匹配的列。
将由对象组成的顶级 JSON 数组展开为一组行,其复合类型与base参数相同。JSON 数组中的每个元素都按照上文对json[b]_populate_record的说明进行处理。
将给定的 SQL 标量值转换为 JSON 标量值。如果输入为 NULL,则返回SQL空值。如果输入是数字或布尔值,则返回相应的 JSON 数字或布尔值。对于其他值,则返回 JSON 字符串。
将 SQL/JSON 表达式转换为字符或二进制字符串。expression可以是任意 JSON 类型、任意字符串类型,或采用 UTF8 编码的bytea。 RETURNING中使用的返回类型可以是任意字符串类型或bytea,默认为text。
递归地删除给定 JSON 值中所有值为 null 的对象字段。如果 strip_in_arrays 为 true(默认值为 false),那么数组中的 null 元素也会被删除;否则不会删除。裸露的 null 值永远不会被删除。
将顶级JSON对象展开为具有由 AS子句定义的复合类型的行。(与所有返回record的函数一样,调用查询必须使用AS子句显式定义记录的结构。)输出记录由JSON对象的字段填充,与上面描述的json[b]_populate_record的方式相同。由于没有输入记录值,不匹配的列总是用空值填充。
将顶级JSON对象数组展开为一组由AS子句定义的复合类型的行。(与所有返回record的函数一样,调用查询必须使用AS子句显式定义记录的结构。)JSON 数组中的每个元素都按照上文对json[b]_populate_record的说明进行处理。
选择filter请求的JSON文档中的每个项,并将每个项转换为tsvector,根据指定的或默认配置对单词进行正规化。然后将结果按文档顺序连接起来以产生输出。位置信息就像在每对选定的项目之间存在一个停用词一样生成。(注意,当输入为jsonb时,JSON对象字段的“文档顺序”取决于实现。)filter必须是一个jsonb数组,其中包含0个或多个关键字:"string"(包括所有字符串值),"numeric"(包括所有数值),"boolean"(包括所有布尔值),"key"(包括所有键),或 "all"(包括以上所有内容)。作为一种特殊情况,该filter也可以是这些关键字之一的简单JSON值。
以文本字符串形式返回顶级JSON值的类型。可能的类型有object、array、string、number、boolean和null。(null 的结果不应与 SQL NULL 混淆;参见示例。)
将所有输入值(包括空值)收集到一个JSON数组中。根据to_json或to_jsonb将值转换为JSON。
将所有非空输入值收集到一个JSON数组中,跳过空值。根据to_json或to_jsonb将值转换为JSON。
将顶级JSON数组展开为一组JSON值。
将顶级 JSON 数组展开为一组text值。
返回顶层JSON数组中的元素数量。
根据可变参数列表构建可能异构类型的JSON数组。每个参数都按照to_json或to_jsonb进行转换。
根据可变参数列表构建一个JSON对象。按照惯例,参数列表由交替的键和值组成。键参数会被强制转换为文本;值参数则按照to_json或to_jsonb进行转换。
将顶级JSON对象展开为一组键/值对。
将顶级 JSON 对象展开为一组键/值对。返回的 value 的类型为text。
在指定路径下提取JSON子对象。(这在功能上相当于#>操作符,但在某些情况下,将路径写成可变参数列表会更方便。)
将指定路径上的 JSON 子对象提取为text。(这在功能上等同于#>>操作符。)
返回插入new_value的target。如果path指派的项是一个数组元素,则当 insert_after为假(此为默认值)时,new_value将被插入到该项之前;当 insert_after为真时,则插入到该项之后。如果由path指派的项是一个对象字段,则只在对象不包含该键时才插入 new_value。路径中的所有前面步骤都必须存在,否则将不加改变地返回target。与面向路径的操作符一样,path中的负整数从 JSON 数组末尾计数。如果最后一个路径步骤是超出范围的数组下标,那么当下标为负时,新值会被添加到数组开头;当下标为正时,新值会被添加到数组末尾。
从 text 数组构造 JSON 对象。该数组必须是一维且包含偶数个成员,此时将成员按交替的键/值对处理;或者是二维数组,且每个内部数组恰好有两个元素,将这两个元素作为一个键/值对。所有值都转换为 JSON 字符串。
将所有键/值对收集到一个JSON对象中。键参数强制转换为文本;值参数按照to_json或to_jsonb进行转换。值可以为空,但键不能(为空)。
将所有键/值对收集到一个JSON对象中。键参数强制转换为文本;值参数按照to_json或to_jsonb进行转换。key不能为空。如果value为空,则跳过该条目。
将所有键/值对收集到一个JSON对象中。键参数强制转换为文本;值参数按照to_json或to_jsonb进行转换。值可以为空,但键不能为空。如果存在重复键,则会抛出错误。
将所有键/值对收集到一个JSON对象中。键参数强制转换为文本;值参数按照to_json或to_jsonb进行转换。key不能为空。如果value为空,则跳过该条目。如果存在重复键,则会抛出错误。
返回顶级JSON对象中的键集合。
检查 JSON 路径是否为指定的 JSON 值返回任何项。(这只对 SQL 标准 JSON 路径表达式有用,而不适用于谓词检查表达式,因为后者总是返回一个值。)如果指定了vars参数,则它必须是一个 JSON 对象,并且它的字段提供要替换到jsonpath表达式中的具名值。如果指定了silent参数并为true,函数会抑制与@? 和 @@操作符相同的错误。
这些函数的作用类似于上面描述的没有_tz后缀的对应函数,不同之处在于这些函数支持需要时区感知转换的日期/时间值的比较。下面的示例需要将仅日期值2015-08-02解释为带有时区的时间戳,因此结果取决于当前的TimeZone设置。由于这种依赖性,这些函数被标记为稳定的,这意味着这些函数不能用于索引。它们的对应函数是不可变的,因此可以用于索引;但如果要求进行这样的比较,它们将抛出错误。
返回指定 JSON 值的 JSON 路径谓词检查的 SQL 布尔结果。(这只对谓词检查表达式有用,而不适用于 SQL 标准 JSON 路径表达式,因为如果路径结果不是单个布尔值,它将失败或返回NULL。)可选的vars和silent参数的作用与jsonb_path_exists相同。
这些函数的作用类似于上面描述的没有_tz后缀的对应函数,不同之处在于这些函数支持需要时区感知转换的日期/时间值的比较。下面的示例需要将仅日期值2015-08-02解释为带有时区的时间戳,因此结果取决于当前的TimeZone设置。由于这种依赖性,这些函数被标记为稳定的,这意味着这些函数不能用于索引。它们的对应函数是不可变的,因此可以用于索引;但如果要求进行这样的比较,它们将抛出错误。
为指定的 JSON 值返回由 JSON 路径返回的所有 JSON 项。对于 SQL 标准 JSON 路径表达式,它返回从target中选出的 JSON 值。对于谓词检查表达式,它返回谓词检查的结果:true、false或null。可选的vars和silent参数的作用与jsonb_path_exists相同。
以JSON数组的形式返回由JSON路径为指定的JSON值返回的所有JSON项。参数与jsonb_path_query相同。
这些函数的作用类似于上面描述的没有_tz后缀的对应函数,不同之处在于这些函数支持需要时区感知转换的日期/时间值的比较。下面的示例需要将仅日期值2015-08-02解释为带有时区的时间戳,因此结果取决于当前的TimeZone设置。由于这种依赖性,这些函数被标记为稳定的,这意味着这些函数不能用于索引。它们的对应函数是不可变的,因此可以用于索引;但如果要求进行这样的比较,它们将抛出错误。
为指定的JSON值返回由JSON路径返回的第一个JSON项。如果没有结果则返回NULL。参数与jsonb_path_query相同。
这些函数的作用类似于上面描述的没有_tz后缀的对应函数,不同之处在于这些函数支持需要时区感知转换的日期/时间值的比较。下面的示例需要将仅日期值2015-08-02解释为带有时区的时间戳,因此结果取决于当前的TimeZone设置。由于这种依赖性,这些函数被标记为稳定的,这意味着这些函数不能用于索引。它们的对应函数是不可变的,因此可以用于索引;但如果要求进行这样的比较,它们将抛出错误。
这些函数的作用类似于上面描述的没有_tz后缀的对应函数,不同之处在于这些函数支持需要时区感知转换的日期/时间值的比较。下面的示例需要将仅日期值2015-08-02解释为带有时区的时间戳,因此结果取决于当前的TimeZone设置。由于这种依赖性,这些函数被标记为稳定的,这意味着这些函数不能用于索引。它们的对应函数是不可变的,因此可以用于索引;但如果要求进行这样的比较,它们将抛出错误。
将顶级 JSON 对象展开为一行,其复合类型与base参数相同。系统会扫描该 JSON 对象,查找名称与输出行类型列名匹配的字段,并将其值插入输出中的对应列。(不对应任何输出列名的字段会被忽略。)在典型用法中,base的值就是NULL,这意味着凡是不匹配对象字段的输出列都会被填充为空值。但是,如果base不是NULL,那么其中包含的值将用于那些不匹配的列。
用于测试jsonb_populate_record的函数。对于给定的输入 JSON 对象,如果jsonb_populate_record能够无错误地完成,即该输入有效,则返回true;否则返回false。
将由对象组成的顶级 JSON 数组展开为一组行,其复合类型与base参数相同。JSON 数组中的每个元素都按照上文对json[b]_populate_record的说明进行处理。
将给定的 JSON 值转换为经过美化并带有缩进的文本。
返回target,将path指定的项替换为new_value,如果create_if_missing为真(此为默认值)并且path指定的项不存在,则添加new_value。路径中的所有前面步骤都必须存在,否则将不加改变地返回target。与面向路径的操作符一样,path中的负整数从 JSON 数组末尾计数。如果最后一个路径步骤是超出范围的数组索引,并且create_if_missing为真,那么如果索引为负,新值将添加到数组的开头,如果索引为正,则添加到数组的结尾。
如果new_value不是NULL,则行为与jsonb_set完全相同。否则,根据null_value_treatment的值进行处理,其值必须是'raise_exception'、'use_json_null'、'delete_key'或'return_target'之一。默认值为'use_json_null'。
递归地删除给定 JSON 值中所有值为 null 的对象字段。如果 strip_in_arrays 为 true(默认值为 false),那么数组中的 null 元素也会被删除;否则不会删除。裸露的 null 值永远不会被删除。
将顶级JSON对象展开为具有由 AS子句定义的复合类型的行。(与所有返回record的函数一样,调用查询必须使用AS子句显式定义记录的结构。)输出记录由JSON对象的字段填充,与上面描述的json[b]_populate_record的方式相同。由于没有输入记录值,不匹配的列总是用空值填充。
将顶级JSON对象数组展开为一组由AS子句定义的复合类型的行。(与所有返回record的函数一样,调用查询必须使用AS子句显式定义记录的结构。)JSON 数组中的每个元素都按照上文对json[b]_populate_record的说明进行处理。
选择filter请求的JSON文档中的每个项,并将每个项转换为tsvector,根据指定的或默认配置对单词进行正规化。然后将结果按文档顺序连接起来以产生输出。位置信息就像在每对选定的项目之间存在一个停用词一样生成。(注意,当输入为jsonb时,JSON对象字段的“文档顺序”取决于实现。)filter必须是一个jsonb数组,其中包含0个或多个关键字:"string"(包括所有字符串值),"numeric"(包括所有数值),"boolean"(包括所有布尔值),"key"(包括所有键),或 "all"(包括以上所有内容)。作为一种特殊情况,该filter也可以是这些关键字之一的简单JSON值。
以文本字符串形式返回顶级JSON值的类型。可能的类型有object、array、string、number、boolean和null。(null 的结果不应与 SQL NULL 混淆;参见示例。)
调整间隔,将30天的时间段转换为月份
调整间隔,将24小时时间段转换为天数
使用 justify_days 和 justify_hours调整时间间隔,并额外调整符号
返回在分区内当前行之前offset行处计算的value;如果没有这样的行,则返回default(其类型必须与value兼容)。offset和default都针对当前行求值。如果省略,offset默认为 1,default默认为NULL。
返回在窗口帧的最后一行求得的value。
返回nextval在当前会话中最近返回的值。这个函数与currval相同,不同之处在于它没有使用序列名作为参数,而是引用当前会话中nextval最近应用到的序列。如果在当前会话中还没有调用nextval,那么调用lastval是一个错误。
最小公倍数(同时为两个输入的整数倍的最小严格正数);如果任意一个输入值为零则返回0;适用于integer、bigint 和 numeric
返回在分区内当前行之后offset行处计算的value;如果没有这样的行,则返回default(其类型必须与value兼容)。offset和default都针对当前行求值。如果省略,offset默认为 1,default默认为NULL。
返回字符串最左侧的 n 个字符;如果 n 为负,则返回除最后 |n| 个字符之外的全部字符。
返回字符串中的字符数。
伽马函数绝对值的自然对数
将两个点转换成通过它们的直线。
自然对数
一天中的当前时刻;参见第 9.9.5 节
当前日期和时间(当前事务开始时);参见第 9.9.5 节
以10为底的对数
以10为底的对数(与 log 相同)
根据数据库的区域设置规则,将字符串转换为全部小写。
范围的下界是否包含在内?
范围是否没有下界?(下界为-Infinity时返回假。)
在string前面添加字符fill(默认为空格),将其填充到长度length。如果string已经长于length,则从右侧截断。
提取框的对角线作为线段。
从string的开头移除仅由characters中字符(默认为空格)组成的最长字符串。
将地址的第 7 位设置为 1,生成所谓的修订 EUI-64 格式,以便用于 IPv6 地址。
从年、月和日字段创建日期(负数年份表示BC)
从年、月、周、日、小时、分钟和秒字段创建时间间隔,每个字段默认为0
从小时、分钟和秒字段创建时间
从年、月、日、小时、分钟和秒字段创建时间戳(负数年份表示BC)
从年、月、日、小时、分钟和秒字段并结合时区创建时间戳(负数年份表示 BC)。如果没有指定timezone,则使用当前时区;示例假设会话时区为Europe/London
使用给定的属性构造aclitem。privileges是以逗号分隔的权限名列表,例如SELECT、INSERT等,列出的所有权限都会设置在结果中。(权限字符串不区分大小写,权限名之间允许有额外的空白,但权限名内部不允许。)
返回子网掩码长度,以位为单位。
计算非空输入值的最大值。适用于任何数字、字符串、日期/时间或枚举类型,以及bytea、inet、interval、money、oid、pg_lsn、tid、xid8,以及包含可排序数据类型的数组和复合类型。
计算参数的 MD5 hash,结果以十六进制形式写入。
返回为当前行执行的合并操作命令。结果为'INSERT'、'UPDATE'或'DELETE'。
计算非空输入值的最小值。适用于任何数字、字符串、日期/时间或枚举类型,以及bytea、inet、interval、money、oid、pg_lsn、tid、xid8,以及包含可排序数据类型的数组和复合类型。
精确表示给定值所需的最少小数位数
y/x的余数;适用于smallint、integer、bigint 和 numeric
计算众数,即聚合参数中出现次数最多的值(若多个值的出现次数相同且最多,则任意选择其中第一个)。聚合参数必须是可排序类型。
返回仅包含给定范围的多范围。
返回给定多事务 ID 与当前多事务计数器之间的多事务 ID 数。
为地址的网络计算网络掩码。
返回地址的网络部分,将子网掩码右边的部分归零。(这相当于将值转换为cidr。)
将序列对象推进到下一个值并返回该值。这个操作是原子的:即使多个会话并发地执行nextval,每个会话也会安全地接收到不同的序列值。如果序列对象是用默认参数创建的,则连续的nextval调用将返回以1开始的连续值。其他行为可以通过在CREATE SEQUENCE命令中使用适当的参数获得。
将字符串转换为指定的 Unicode 规范化形式。可选的 form 关键字指定如下形式:NFC(默认值)、NFD、NFKC 或 NFKD。该函数只能在服务器编码为 UTF8 时使用。
当前日期和时间(当前事务开始时);参见第 9.9.5 节
返回点的数量。适用于 path、polygon。
返回在窗口帧的第n行求得的value(从1开始计数);如果没有这样的行,则返回NULL。
返回从 1 到参数值的整数,将分区尽可能均等地划分。
返回非 null 参数的数量。
返回 null 参数的数量。
返回tsquery中词位和操作符的数目。
返回数据库对象的注释,对象由其 OID 和所在系统目录的名称指定。例如,obj_description(123456, 'pg_class')会获取 OID 为 123456 的表的注释。
返回字符串的字节数。
用newsubstring替换string中从第start个字符开始、长度为count个字符的子字符串。如果省略count,则默认为newsubstring的长度。
将qualified_identifier拆分为一个标识符数组,去除各个标识符的引号。默认情况下,最后一个标识符之后的额外字符被视为错误;但是,如果第二个参数为false,则忽略这些额外的字符。(这种行为对于解析类似函数的对象的名称有作用。)请注意,此函数不会截断超长标识符。如果你想截断,你可以将结果转换为name[]。
将多边形转换为具有相同点列表的封闭路径。
将路径转换为封闭形式。
计算假设行的相对排名,即(rank - 1)/(总行数 - 1)。取值范围为 0 到 1(含)。
计算连续百分位点,该值对应于聚合参数值有序集合中的指定fraction。必要时会在相邻输入项之间进行插值。
计算离散百分位数,即聚合参数值的有序集合中的第一个值,该值在排序中的位置等于或超过指定的fraction。聚合参数必须是可排序类型。
获取一个排他的会话级咨询锁,如有必要则等待。
获取一个共享的会话级咨询锁,如有必要则等待。
释放以前获取的排他会话级咨询锁。如果锁成功释放则返回true。如果锁没有被持有,则返回false,此外,服务器将报告一个SQL警告。
释放当前会话所持有的所有会话级咨询锁。(即使客户端异常断开连接,这个函数也会在会话结束时被隐式调用。)
释放以前获取的共享会话级咨询锁。如果锁成功释放则返回true。如果锁没有被持有,则返回false,此外,服务器将报告一个SQL警告。
获取一个排他的事务级咨询锁,如有必要则等待。
获取一个共享的事务级咨询锁,如有必要则等待。
返回数据目录中 pg_wal/summaries下现有 WAL 汇总文件的信息。每个 WAL 汇总文件返回一行。每个文件都汇总了指定 TLI 上、指定 LSN 范围内的 WAL。该函数可用于判断服务器上是否存在足够的 WAL 汇总,从而基于某个已知起始 LSN 的先前备份执行增量备份。
返回附加到当前会话的服务器进程的进程ID。
准备服务器开始在线备份。唯一必需的参数是用户任意指定的备份标签。(通常是备份转储文件将要保存的名称。)如果可选的第二个参数为true,则尽快执行pg_backup_start。这会强制立即执行检查点,使 I/O 操作量陡增,并降低并发执行的查询的速度。
结束在线备份。备份标签文件和表空间映射文件所需的内容作为函数结果的一部分返回,必须将其写入备份区域中的文件。切勿将这些文件写入正在使用的数据目录(否则发生崩溃后 PostgreSQL 将无法重新启动)。
返回由类型 OID 标识的域的基础类型 OID。如果参数是非域类型的 OID,则原样返回该参数。如果参数不是有效的类型 OID,则返回 NULL。如果存在域依赖链,则递归查找,直到找到基础类型。
返回一个数组,包含阻止指定进程 ID 对应的服务器进程获取锁的会话进程 ID;如果不存在这样的服务器进程,或该进程未被阻塞,则返回空数组。
取消具有指定进程ID的后端进程的会话的当前查询。如果调用角色是被取消的后端进程所属角色的成员,或者调用角色具有pg_signal_backend的权限,则也允许执行此操作,但只有超级用户可以取消超级用户后端进程。例外情况是,具有pg_signal_autovacuum_worker角色权限的角色可以取消 autovacuum 工作进程,而这些进程原本被视为超级用户后端。
将提供的编码名称转换为表示在某些系统目录表中使用的内部标识符的整数。如果提供了未知的编码名称,则返回-1。
清除给定关系和属性的列级统计信息,就像该表是新创建的一样。
清除给定关系的表级统计信息,就像该表是新创建的一样。
返回当前客户端编码名称。
返回当前安装在操作系统中的该排序规则对象的实际版本。如果这个版本与pg_collation.collversion中的值不同,则依赖于该排序规则的对象可能需要被重建。还可以参考ALTER COLLATION。
排序规则在搜索路径中可见吗?
显示用于压缩单个变长值的压缩算法。如果值没有被压缩,则返回NULL。
显示用于存储任何单个数据值的字节数。如果直接应用于表的列值,则反映所做的任何压缩。
显示磁盘上经过TOAST处理的值的chunk_id。如果该值未经过TOAST处理或不在磁盘上,则返回NULL。有关TOAST的更多信息,请参见第 66.2 节。
返回服务器配置文件最近一次加载的时间。如果当时当前会话已经存在,则返回该会话自身重新读取配置文件的时间(因此不同会话中的返回时间会略有不同)。否则,返回 postmaster 进程重新读取配置文件的时间。
返回有关当前检查点状态的信息,如表 9.89所展示。
返回有关集簇初始化状态的信息,如表 9.91所展示。
返回有关恢复状态的信息,如表 9.92所展示。
返回有关当前控制文件状态的信息,如表 9.90所展示。
转换在搜索路径中可见吗?
复制一个名为src_slot_name的现有逻辑复制槽到一个名为dst_slot_name的逻辑复制槽,可选地更改输出插件和持久性。被复制的逻辑槽从与源逻辑槽相同的LSN开始。temporary和plugin都是可选的。如果它们被省略了,使用与源逻辑槽相同的值。源逻辑槽的failover选项不会被复制,而是默认设为false。这是为了避免故障切换到正在同步该槽的备库后无法继续逻辑复制的风险。不能复制已失效的槽。
将一个名为src_slot_name的现有物理复制槽复制到一个名为dst_slot_name的物理复制槽。复制后的物理槽从与源槽相同的LSN开始保留WAL。temporary是可选的。如果省略了temporary,则使用与源槽相同的值。不能复制已失效的槽。
创建一个名为slot_name的新逻辑(解码)复制槽,使用输出插件plugin。可选的第三个参数temporary,当设置为真时,指定槽不应永久存储到磁盘,仅供当前会话使用。临时槽也会在任何错误发生时释放。可选的第四个参数twophase,当设置为真时,指定为此槽启用预备事务的解码。可选的第五个参数failover,当设置为真时,指定启用此槽同步到备库,以便在故障切换后可以恢复逻辑复制。调用此函数的效果与复制协议命令CREATE_REPLICATION_SLOT ... LOGICAL相同。
创建名为 slot_name 的新物理复制槽。可选的第二个参数为 true 时,指定立即为此复制槽保留 LSN;否则在流复制客户端首次连接时保留 LSN。从物理槽流式传输更改只能使用流复制协议 — 参见第 54.4 节。可选的第三个参数 temporary 为真时,指定该槽不永久存储到磁盘,且仅供当前会话使用。发生任何错误时,临时槽也会被释放。此函数对应复制协议命令 CREATE_REPLICATION_SLOT ... PHYSICAL。
在预写式日志中创建一条命名标记记录,供以后用作恢复目标,并返回相应的预写式日志位置。随后可以在recovery_target_name中使用给定名称,指定恢复到哪一点。应避免创建多个同名恢复点,因为恢复会在第一个名称匹配恢复目标的恢复点停止。
返回当前由日志收集器使用的日志文件的路径名。路径包括log_directory目录和单独的日志文件名。如果日志收集器已禁用,则结果为NULL。当存在多个日志文件,每个以不同格式存在时,不带参数的pg_current_logfile返回有序列表中找到的第一个格式的文件路径:stderr,csvlog,jsonlog。如果没有任何日志文件具有这些格式,则返回NULL。要请求有关特定日志文件格式的信息,请将csvlog,jsonlog或stderr作为可选参数的值。如果请求的日志格式未在log_destination中配置,则结果为NULL。结果反映current_logfiles文件的内容。
返回当前快照,即显示哪些事务 ID 正在进行中的数据结构。快照中只包含顶层事务 ID,不显示子事务 ID;详见第 67.3 节。
返回当前预写式日志刷盘位置(参见下文说明)。
返回当前预写式日志插入位置(参见下文说明)。
返回当前预写式日志写入位置(参见下文说明)。
返回当前事务的ID。如果当前事务还没有一个ID(因为它还没有执行任何数据库更新),它将分配一个新的事务 ID;详见第 67.1 节。如果在子事务中执行,它将返回顶层事务的ID;详见第 67.3 节。
返回当前事务的 ID;如果尚未分配 ID,则返回NULL。(如果事务本来可能是只读的,最好使用此变体,以免不必要地消耗 XID。)如果在子事务中执行,则返回顶层事务 ID。
返回数据库当前在操作系统中安装的排序规则的实际版本。如果这与pg_database.datcollversion中的值不同,则依赖于排序规则的对象可能需要重新构建。参见ALTER DATABASE。
计算具有指定名称或OID的数据库使用的总磁盘空间。要使用此函数,您必须对指定数据库具有CONNECT权限(默认情况下授予),或者具有pg_read_all_stats角色的权限。
返回数据库对象的文本描述,对象由系统目录 OID、对象 OID 和子对象 ID 指定(例如表中的列号;引用整个对象时,子对象 ID 为零)。该描述供人阅读,并可能根据服务器配置被翻译。这对于确定pg_depend系统目录中所引用对象的标识尤其有用。对于未定义的对象,此函数返回NULL。
删除名为slot_name的物理或逻辑复制槽。与复制协议命令DROP_REPLICATION_SLOT相同。
将在某些系统目录表中用作编码内部标识符的整数转换为可读的字符串。如果提供了无效的编码编号,则返回空字符串。
当在一个ddl_command_end事件触发器的函数中调用时,pg_event_trigger_ddl_commands返回被每一个用户动作执行的DDL命令的列表。如果在其他任何环境中调用这个函数,会发生错误。pg_event_trigger_ddl_commands为每一个被执行的基本命令返回一行,某些由单条 SQL 语句构成的命令可能会返回多于一行。这个函数返回下面的列:
在命令的sql_drop事件中调用pg_event_trigger_dropped_objects时,它返回该命令删除的所有对象的列表。如果调用在任何其他上下文中,会引发一个错误。这个函数返回以下列:
返回将要重写的表的OID。
返回一个说明重写原因的代码。该值是由以下值组成的位图:1(表的持久性发生变化)、2(某列的默认值发生变化)、4(某列具有新的数据类型)以及 8(表访问方法发生变化)。
保存事务的当前快照并返回text字符串以标识该快照。必须将此字符串传递(在数据库之外)给希望导入快照的客户端。快照仅在导出它的事务结束之前才可用于导入。
根据关系所在表空间的 OID 和文件节点返回该关系的 OID。这本质上是pg_relation_filepath的反向映射。对于数据库默认表空间中的关系,表空间可以指定为 0。如果当前数据库中没有与给定值关联的关系,或者该关系是临时关系,则返回NULL。
函数在搜索路径中可见吗?(这也适用于过程和聚合。)
返回由系统目录 OID、对象 OID 和子对象 ID 指定的数据库对象的ACL。对于未定义的对象,此函数返回NULL值。
返回一组记录,描述存在于PostgreSQL系统目录中的外键关系。fktable 列包含引用目录的名称,fkcols列包含引用列的名称。类似地,pktable列包含被引用目录的名称,而pkcols列包含被引用列的名称。如果is_array为真,则最后一个引用列是一个数组,其每个元素都应该与被引用目录中的某个条目匹配。如果is_opt为真,则允许引用列包含零而不是有效引用。
重建约束的创建命令。(这是反编译重建的结果,并非命令的原始文本。)
反编译存储在系统目录中的表达式的内部形式,例如列的默认值。如果表达式可能包含 Var 节点,请将它们所引用的关系的 OID 指定为第二个参数;如果预计不含 Var 节点,传入零即可。
重建函数或过程的参数列表,采用其在CREATE FUNCTION中应有的形式(包括默认值)。
重建标识函数或过程所需的参数列表,采用其在ALTER FUNCTION等命令中应有的形式。这种形式省略默认值。
重建函数的RETURNS子句,采用其在CREATE FUNCTION中应有的形式。对于过程,返回NULL。
重建函数或过程的创建命令。(这是反编译重建的结果,并非命令的原始文本。)结果是一条完整的CREATE OR REPLACE FUNCTION或CREATE OR REPLACE PROCEDURE语句。
重建索引的创建命令。(这是反编译重建的结果,并非命令的原始文本。)如果提供了column而且不为零,则只重建该列的定义。
返回描述服务器所识别 SQL 关键字的一组记录。word列包含关键字。catcode列包含类别代码:U表示非保留关键字,C表示可用作列名的关键字,T表示可用作类型名或函数名的关键字,R表示完全保留的关键字。如果关键字可以在SELECT列表中用作“裸”列标签,barelabel列为true;如果只能在AS之后使用,则为false。catdesc列包含描述关键字类别的字符串,该字符串可能已被本地化。baredesc列包含描述关键字列标签状态的字符串,该字符串可能已被本地化。
返回当前服务器会话中已加载的可加载模块列表。除非模块作者使用 PG_MODULE_MAGIC_EXT 宏提供了这些值,否则 module_name 和 version 字段为 NULL。file_name 字段给出模块(共享库)的文件名。
返回指定多事务 ID 中每个成员的事务 ID 和锁模式。锁模式 forupd、fornokeyupd、sh 和 keysh 分别对应于第 13.3.2 节中描述的行级锁 FOR UPDATE、FOR NO KEY UPDATE、FOR SHARE 和 FOR KEY SHARE。另有两种多事务特有的模式:nokeyupd 用于不修改键列的更新,upd 用于修改键列的更新或删除。
返回一行,其中包含足以唯一标识数据库对象的信息,该对象由类型代码、对象名称数组和参数数组指定。返回的值就是pg_depend等系统目录中使用的值;它们可以传给pg_describe_object或pg_identify_object等其他系统函数。classid是包含该对象的系统目录的 OID;objid是对象自身的 OID;objsubid是子对象 ID,没有子对象时为零。此函数执行pg_identify_object_as_address的逆操作。未定义的对象以NULL值标识。
重建分区约束的定义。(这是反编译重建的结果,并非命令的原始文本。)
重建分区表的分区键定义,采用其在CREATE TABLE的PARTITION BY子句中的形式。(这是反编译重建的结果,并非命令的原始文本。)
重建规则的创建命令。(这是反编译重建的结果,并非命令的原始文本。)
返回与列相关联的序列名称,如果没有序列与该列相关联则返回NULL。如果列是标识列,则关联序列是在内部为该列创建的序列。对于使用一种 serial 类型(serial、smallserial、bigserial)创建的列,它是为该 serial 列定义创建的序列。在后一种情况下,可以使用ALTER SEQUENCE OWNED BY修改或删除关联。(这个函数可能应该被称为pg_get_owned_sequence;它的当前名称反映了它在历史上曾与 serial 类型的列一起使用。)第一个参数是具有可选模式的表名,第二个参数是列名。由于第一个参数可能包含模式名和表名,因此按照通常的SQL规则解析它,这意味着默认情况下它是小写的。第二个参数只是一个列名,按照字面来处理,因此保留了它的大小写。结果经过了适当的格式化,可以传递给序列函数(参见第 9.17 节)。
重建扩展统计对象的创建命令。(这是反编译重建的结果,并非命令的原始文本。)
重建触发器的创建命令。(这是反编译重建的结果,并非命令的原始文本。)
根据OID返回角色名。
重建定义视图或物化视图的SELECT命令。(这是反编译重建的结果,并非命令的原始文本。)
返回恢复暂停状态。如果没有请求暂停,返回值是not paused,如果请求暂停但恢复还没有暂停,返回值是pause requested,如果恢复实际已经暂停,返回值是paused。
返回系统中当前加载的 WAL 资源管理器。列rm_builtin指示它是内置资源管理器还是由扩展加载的自定义资源管理器。
返回有关 WAL 汇总器进度的信息。如果自实例启动以来 WAL 汇总器从未运行过,则 summarized_tli和summarized_lsn 将分别为0和0/0;否则,它们将是最近写入磁盘的 WAL 汇总文件的 TLI 和结束 LSN。如果 WAL 汇总器当前正在运行,pending_lsn将是它已消费的最后一条记录的结束 LSN,该值必定始终大于或等于summarized_lsn;如果 WAL 汇总器未在运行,则它将等于summarized_lsn。summarizer_pid是 WAL 汇总器进程的 PID;如果它正在运行则返回该 PID,否则为 NULL。
用户是否具有角色权限?允许的权限类型为MEMBER、USAGE和SET。MEMBER表示对该角色的直接或间接成员资格,而不考虑由此授予的具体权限。USAGE表示该角色的权限是否无需执行SET ROLE即可立即使用,而SET表示是否可以使用SET ROLE命令切换到该角色。任一权限类型后面都可以附加WITH ADMIN OPTION或WITH GRANT OPTION,用于测试是否持有 ADMIN 权限(这六种写法测试的都是同一件事)。此函数不允许将user设置为public这一特殊情况,因为 PUBLIC 伪角色永远不能成为实际角色的成员。
返回一行,其中包含足以唯一标识数据库对象的信息,该对象由系统目录 OID、对象 OID 和子对象 ID 指定。这些信息供机器读取,永远不会被翻译。type标识数据库对象的类型;schema是对象所属的模式名,对于不属于模式的对象类型则为NULL;如果对象名(以及适用时的模式名)足以唯一标识该对象,name就是对象名,并在必要时加引号,否则为NULL;identity是完整的对象标识,其具体格式取决于对象类型,格式中的每个名称都会根据需要加上模式限定和引号。未定义的对象以NULL值标识。
返回一行,其中包含足以唯一标识数据库对象的信息,该对象由系统目录 OID、对象 OID 和子对象 ID 指定。返回的信息与当前服务器无关,也就是说,它也能用于标识另一台服务器上名称相同的对象。type标识数据库对象的类型;object_names和object_args是 text 数组,共同构成对该对象的引用。将这三个值传给pg_get_object_address可以获得对象的内部地址。
根据操作系统中找到的所有区域设置,向系统目录pg_collation添加排序规则。initdb使用的就是此函数;更多信息见第 23.2.2 节。如果以后在操作系统中安装了其他区域设置,可以再次运行此函数,为新区域设置添加排序规则。与pg_collation中现有条目匹配的区域设置会被跳过。(但此函数不会删除基于操作系统中已不存在的区域设置的排序规则对象。)schema参数通常为pg_catalog,但并非必须如此;也可以将排序规则安装到其他模式中。函数返回新建的排序规则对象数量。此函数仅限超级用户使用。
测试一个索引列是否具有指定名称的属性。表 9.77列出了常用索引列属性。(注意,扩展访问方法可以为其索引定义额外的属性名。)如果属性名未知或不适用于特定对象,或者OID或列号不能识别有效的对象,则返回NULL。
测试一个索引是否具有指定名称的属性。表 9.78列出了常用的索引属性。(注意,扩展访问方法可以为其索引定义额外的属性名。)如果属性名未知或不适用于特定对象,或者OID不能识别有效的对象,则返回NULL。
测试索引访问方法是否具有指定名称的属性。访问方法属性如表 9.79所示。如果属性名未知或不适用于特定对象,或者OID不能识别有效的对象,则返回NULL。
计算附加到指定表的索引所使用的总磁盘空间。
测试给定的string是否是指定数据类型的有效输入;如果不是,则返回本应抛出的错误详情。如果输入有效,则结果为 NULL。输入参数与pg_input_is_valid 相同。
测试给定的string是否是指定数据类型的有效输入,返回 true 或 false。
如果恢复仍在进行则返回真。
如果给定的OID是另一个会话的临时模式的OID则返回真。(这可能是有用的,例如,在目录显示中排除其他会话的临时表。)
如果已请求暂停恢复,则返回真。
如果JIT编译器扩展可用(参见第 30 章),并且jit配置参数设置为on,则返回真。
返回最近提交事务的事务 ID、提交时间戳和复制源。
返回流复制最近接收并同步到磁盘的预写式日志位置。在流复制进行期间,该值单调增加。如果恢复已完成,该值将保持为恢复期间最后接收并同步到磁盘的 WAL 记录的位置。如果禁用了流复制,或者流复制尚未开始,此函数返回 NULL。
返回恢复期间最近重放的预写式日志位置。如果恢复仍在进行,该值单调增加。如果恢复已完成,该值将保持为该次恢复期间最后应用的 WAL 记录的位置。如果服务器未经恢复而正常启动,此函数返回 NULL。
返回恢复期间最近重放事务的时间戳,即该事务的提交或中止 WAL 记录在主库上生成的时间。如果恢复期间尚未重放任何事务,此函数返回 NULL。否则,如果恢复仍在进行,该值单调增加。如果恢复已完成,该值将保持为该次恢复期间最后应用的事务的时间戳。如果服务器未经恢复而正常启动,此函数返回 NULL。
返回当前会话正在侦听的异步通知通道的名称集。
请求记录具有指定进程 ID 的后端进程的内存上下文。此函数可以向除日志记录进程以外的后端进程和辅助进程发送请求。这些内存上下文将以LOG消息级别记录,并根据日志配置出现在服务器日志中(详见第 19.8 节);无论client_min_messages如何设置,都不会发送给客户端。
为进行中的事务拍摄快照并将其写入 WAL,无须等待后台写入器或检查点进程记录快照。这对备用服务器上的逻辑解码很有用,因为创建逻辑复制槽必须等待此类记录在备用服务器上重放。
发出逻辑解码消息。这可用于通过 WAL 向逻辑解码插件传递通用消息。transactional 参数指定消息是作为当前事务的一部分,还是立即写入并在逻辑解码器读到该记录时立即解码。prefix 参数是一个文本前缀,便于逻辑解码插件识别其关注的消息。content 参数是消息内容,可以文本或二进制形式给出。flush 参数(默认为 false)控制是否立即将消息对应的 WAL 记录刷盘。transactional 为真时,flush 不起作用,因为消息的 WAL 记录会与其事务一起刷盘。
行为就像pg_logical_slot_get_changes()函数,不过改变会以bytea返回。
返回槽 slot_name 中自上次消费更改的位置起的更改。如果 upto_lsn 和 upto_nchanges 都为 NULL,逻辑解码会持续到 WAL 末尾。如果 upto_lsn 非 NULL,解码仅包含在指定 LSN 之前提交的事务。如果 upto_nchanges 非 NULL,解码产生的行数超过指定值时就会停止。不过,实际返回行数可能更大,因为只有在添加完对每个新事务提交进行解码所产生的行后,才会检查此限制。如果指定的槽是逻辑故障切换槽,则只有在synchronized_standby_slots中指定的所有物理槽都确认已接收 WAL 后,该函数才会返回。
行为就像pg_logical_slot_peek_changes()函数,不过改变会以bytea返回。
行为就像pg_logical_slot_get_changes()函数,不过改变不会被消费,即在未来的调用中还会返回这些改变。
返回服务器 WAL 归档状态目录(pg_wal/archive_status)中每个普通文件的名称、大小和最后修改时间(mtime)。以点号开头的文件名、目录以及其他特殊文件都不会包含在结果中。
返回指定目录中所有文件的名称(包括目录及其他特殊文件)。include_dot_dirs参数指示结果集中是否包含“.”和“..”;默认不包含它们。在missing_ok为 true时,包含它们有助于区分不存在的目录和空目录。
返回服务器日志目录中每个普通文件的名称、大小和最后修改时间(mtime)。以点开头的文件名、目录和其他特殊文件将被排除。
返回服务器的pg_logical/mappings目录中每个普通文件的名称、大小和最后修改时间(mtime)。以点开头的文件名、目录和其他特殊文件将被排除。
返回服务器的pg_logical/snapshots目录中每个普通文件的名称、大小和最后修改时间(mtime)。以点开头的文件名、目录和其他特殊文件将被排除。
返回服务器的pg_replslot/slot_name目录中每个普通文件的名称、大小和最后修改时间(mtime),其中slot_name是作为函数输入提供的复制槽的名称。以点开头的文件名、目录和其他特殊文件将被排除。
返回服务器 WAL 摘要目录(pg_wal/summaries)中每个普通文件的名称、大小和最后修改时间(mtime)。排除名称以点开头的文件、目录及其他特殊文件。
返回针对指定tablespace的临时文件目录中每个普通文件的名称、大小和最后修改时间(mtime)。如果未提供tablespace,则检查pg_default表空间。以点号开头的文件名、目录以及其他特殊文件都不会包含在结果中。
返回服务器的预写式日志(WAL)目录中每个普通文件的名称、大小和最后修改时间(mtime)。以点开头的文件名、目录和其他特殊文件将被排除。
pg_mcv_list_items返回一组记录,描述存储在多列MCV列表中的所有项目。它返回以下列:
返回当前会话的临时模式的OID,如果没有则返回0(因为它没有创建任何临时表)。
返回待处理通知当前占用的空间占异步通知队列最大容量的比例(0–1)。更多信息请参见LISTEN和NOTIFY。
如果服务器在编译时启用了 NUMA 支持,则返回真。
操作符类在搜索路径中可见吗?
操作符在搜索路径中可见吗?
操作符族在搜索路径中可见吗?
返回源自pg_class.reloptions 或 pg_attribute.attoptions的值表示的存储选项集。
列出给定分区的祖先关系,包括关系本身。如果关系不存在,或者不是分区或分区表,则不返回行。
返回给定关系所属的分区树的最顶级父节点。如果关系不存在,或者不是分区或分区表,则返回NULL。
列出给定分区表或分区索引的分区树中的表或索引,每行对应一个分区。提供的信息包括分区的OID、其直接父的OID、一个布尔值以告知分区是否是叶子,以及一个整数用来告诉分区在层次结构中的级别。对于输入表或索引,级别值为0,其直接子分区的为1,它们的分区为2,以此类推。如果关系不存在,或者不是分区或分区表,则不返回行。
返回服务器启动时的时间。
将备库提升为主库状态。当wait设置为true(默认值)时,函数将等待直到提升完成或wait_seconds秒数已过,如果提升成功则返回true,否则返回false。如果wait设置为false,则该函数在向postmaster发送SIGUSR1信号以触发提升后立即返回true。
返回文件的全部或部分。该函数与pg_read_file完全相同,只是它可以读取任意二进制数据,并返回bytea而不是text;因此不会执行编码检查。
返回一个文本文件的全部或部分,从给定的字节offset开始,最多返回length字节(如果先到达文件末尾,则返回更少)。如果offset为负,则它相对于文件末尾计算。如果省略offset和length,则返回整个文件。从文件中读取的字节会按数据库编码解释为字符串;如果它们在该编码下无效,则会抛出错误。
返回当前分配给指定关系的“文件节点”编号。文件节点是关系所用文件名的基本组成部分(更多信息见第 66.1 节)。对于大多数关系,结果与 pg_class.relfilenode相同;但某些系统目录的 relfilenode为零,必须使用此函数获取正确值。如果传入的关系没有存储空间(例如视图),函数返回 NULL。
返回关系的完整文件路径名称(相对于数据库集簇的数据目录,即PGDATA)。
计算指定关系的一个“分支”所使用的磁盘空间。(注意在大多数情况下,使用更高级的函数 pg_total_relation_size或pg_table_size更方便,它们将所有分支的大小相加。)使用一个参数,这将返回关系的主数据分支的大小。第二个参数可以用来指定要检查哪个分支:
使PostgreSQL服务器的所有进程重新加载其配置文件。(这是通过向postmaster进程发送SIGHUP信号来启动的,postmaster进程又向其每个子进程发送SIGHUP。)您可以使用pg_file_settings、pg_hba_file_rules和 pg_ident_file_mappings视图来检查可能存在的错误,然后再重新加载配置文件。
将给定节点的复制进度设置为给定的位置。这主要用于设置初始位置,或在配置更改或类似的变更后设置新位置。请注意这个函数的不当使用可能会导致不一致的复制数据。
用给定的外部名称创建一个复制源,并且返回分配给它的内部 ID。该名称长度不得超过 512 字节。
删除一个以前创建的复制源,包括任何相关的重放进度。
通过名称查找复制源并返回其内部ID。如果未找到这样的复制源,则返回 NULL。
返回给定复制源的重放位置。参数flush决定是否保证对应的本地事务已刷盘。
如果在当前会话中选择了复制源则返回真。
返回当前会话中选择的复制源的重放位置。参数flush决定是否保证对应的本地事务已刷盘。
取消pg_replication_origin_session_setup()的效果。
将当前会话标记为从给定的复制源重放,从而允许跟踪重放进度。只能在当前没有选择复制源时使用。使用pg_replication_origin_session_reset来撤销。
取消pg_replication_origin_xact_setup()的效果。
将当前事务标记为重放在给定LSN和时间戳上提交的事务。只能在使用pg_replication_origin_session_setup选择复制源时调用。
推进名为 slot_name 的复制槽当前已确认的位置。该槽不会后退,也不会越过当前插入位置。返回槽名及其实际推进到的位置。如果发生了推进,更新后的槽位置信息会在下一个检查点写出。因此,发生崩溃时,槽可能回到更早的位置。如果指定的槽是逻辑故障切换槽,则只有在 synchronized_standby_slots 中指定的所有物理槽都确认已接收 WAL 后,该函数才会返回。
创建或更新列级统计信息。通常这些统计信息会自动收集或作为VACUUM或ANALYZE的一部分更新,因此不必调用此函数。但它在恢复后很有用,可以在尚未运行ANALYZE时帮助优化器选择更好的计划。
更新表级统计信息。通常这些统计信息会自动收集或作为VACUUM或ANALYZE的一部分更新,因此不必调用此函数。但它在恢复后很有用,可以在尚未运行ANALYZE时帮助优化器选择更好的计划。
通知日志文件管理器立即切换到一个新的输出文件。这仅在内置日志收集器运行时有效,因为否则没有日志文件管理器子进程。
返回一个数组,包含阻止指定进程 ID 对应的服务器进程获取安全快照的会话进程 ID;如果不存在这样的服务器进程,或该进程未被阻塞,则返回空数组。
返回与给定 GUC 关联的标志数组;如果该 GUC 不存在,则返回NULL。如果 GUC 存在但没有要显示的标志,则结果为空数组。此函数仅公开表 9.80中列出的最有用的标志。
将人类可读格式的大小(由pg_size_pretty返回)转换为字节。有效的单位为bytes、B、kB、MB、GB、TB和PB。
将字节大小转换为更易于人类阅读的格式,带有大小单位(字节,kB,MB,GB,TB或PB)。请注意,单位是2的幂,而不是10的幂,因此1kB是1024字节,1MB是10242 = 1048576字节,依此类推。
pg_sleep使当前会话的进程休眠,直到经过指定的秒数。可以指定带小数部分的秒数作为延迟时间。pg_sleep_for是一个便捷函数,允许以interval指定休眠时间。pg_sleep_until是在需要指定唤醒时间时使用的便捷函数。例如:
pg_sleep使当前会话的进程休眠,直到经过指定的秒数。可以指定带小数部分的秒数作为延迟时间。pg_sleep_for是一个便捷函数,允许以interval指定休眠时间。pg_sleep_until是在需要指定唤醒时间时使用的便捷函数。例如:
pg_sleep使当前会话的进程休眠,直到经过指定的秒数。可以指定带小数部分的秒数作为延迟时间。pg_sleep_for是一个便捷函数,允许以interval指定休眠时间。pg_sleep_until是在需要指定唤醒时间时使用的便捷函数。例如:
返回快照中包含的正在进行的事务 ID集。
返回快照的xmax。
返回快照的xmin。
从 WAL 文件名中提取序列号和时间线 ID。
返回一个记录,包含文件大小、最后访问时间戳、最后修改时间戳、最后文件状态变更时间戳(仅限 Unix 平台)、文件创建时间戳(仅限 Windows)以及一个指示其是否为目录的标志。
统计对象在搜索路径中可见吗?
强制服务器切换到新的预写式日志文件,使当前文件可以归档(假设正在使用连续归档)。返回值是刚完成的预写式日志文件中的结束预写式日志位置加 1。如果自上次切换预写式日志以来没有发生任何预写式日志活动,pg_switch_wal不执行任何操作,并返回当前使用的预写式日志文件的起始位置。
将逻辑故障切换复制槽从主库同步到备库。此函数只能在备库上执行。临时同步的槽(如果有)不能用于逻辑解码,必须在提升后删除。详见第 47.2.3 节。请注意,此函数主要用于测试和调试目的,应谨慎使用。此外,如果sync_replication_slots已启用且slotsync工作进程已在运行以执行槽同步,则无法执行此函数。
表在搜索路径中可见吗?(这适用于所有类型的关系,包括视图、物化视图、索引、序列和外部表。)
计算指定表所使用的磁盘空间,不包括索引(但包括其 TOAST 表(如有)、空闲空间映射和可见性映射)。
返回在指定表空间中存储了对象的数据库 OID 集合。如果此函数返回任何行,则说明该表空间不为空,不能删除。要查看存放在该表空间中的具体对象,需要连接到pg_tablespace_databases标识的数据库,并查询它们的pg_class系统目录。
返回表空间所在的文件系统路径。
计算具有指定名称或OID的表空间中使用的总磁盘空间。要使用此函数,您必须对指定的表空间具有CREATE权限,或者具有pg_read_all_stats角色的权限,除非它是当前数据库的默认表空间。
终止具有指定进程ID的后端进程的会话。如果调用角色是正在终止的后端的角色的成员,或者调用角色具有pg_signal_backend的权限,则也允许执行此操作,但只有超级用户才能终止超级用户后端。例外情况是,具有pg_signal_autovacuum_worker角色权限的角色可以终止 autovacuum 工作进程,而这些进程原本被视为超级用户后端。
计算指定表所使用的总磁盘空间,包括所有索引和TOAST数据。结果等价于pg_table_size + pg_indexes_size。
返回PostgreSQL触发器的当前嵌套层级(如果不是从触发器内部直接或间接调用,则为 0)。
尝试获取一个排他的会话级咨询锁。如果能立即获取到锁,就返回true;否则立即返回false,而不等待。
尝试获取一个共享的会话级咨询锁。如果能立即获取到锁,就返回true;否则立即返回false,而不等待。
尝试获取一个排他的事务级咨询锁。如果能立即获取到锁,就返回true;否则立即返回false,而不等待。
尝试获取一个共享的事务级咨询锁。如果能立即获取到锁,就返回true;否则立即返回false,而不等待。
全文检索配置是否在搜索路径中可见?
全文检索词典是否在搜索路径中可见?
全文检索解析器是否在搜索路径中可见?
全文检索模板是否在搜索路径中可见?
类型(或域)在搜索路径中可见吗?
返回所传入值的数据类型的 OID。这有助于排查问题或动态构造 SQL 查询。函数声明的返回类型是regtype,它是一种 OID 别名类型(参见第 8.19 节);这意味着它在比较时与 OID 相同,但显示为类型名。
根据此快照,给定的事务 ID 是否可见(即该事务是否在生成快照之前完成)?注意,此函数无法为子事务 ID(subxid)给出正确结果;详见第 67.3 节。
计算两个预写式日志位置之间的字节差(lsn1 - lsn2)。可以将它与pg_stat_replication或表 9.97中的某些函数配合使用,以获取复制延迟。
请求暂停恢复。请求不意味着恢复马上停止。如果你想要保证恢复实际上是暂停的,你需要检查pg_get_wal_replay_pause_state()返回的恢复暂停状态。注意,pg_is_wal_replay_paused()返回是否作出请求。在恢复暂停时,不会应用进一步的数据库更改。如果热备是激活的,所有新查询将看到相同的一致的数据库快照,并且在恢复继续之前不会生成进一步的查询冲突。
如果暂停了,则重新启动恢复。
返回由 TLI 以及起始和结束 LSN 标识的单个 WAL 汇总文件内容的信息。每一行中,如果is_limit_block为 false,则表示其余输出列所标识的块在该文件所汇总的 WAL 记录范围内被至少一条 WAL 记录修改过。每一行中,如果is_limit_block 为 true,则表示以下两种情况之一:(a) 该关系分支在相关 WAL 记录范围内被截断到relblocknumber给出的长度;或者 (b) 该关系分支在相关 WAL 记录范围内被创建或删除;在创建或删除的情况下,relblocknumber将为零。
将预写式日志位置转换为包含该位置的 WAL 文件的名称。
将预写式日志位置转换为WAL文件名和该文件中的字节偏移量。
返回事务的提交时间戳。
返回事务的提交时间戳和复制源。
报告近期事务的提交状态。只要事务足够新,系统仍保留其提交状态,结果就为in progress、committed或aborted。如果事务已足够旧,系统中不再有对它的引用,且提交状态信息已被丢弃,则返回NULL。例如,在COMMIT进行过程中应用与数据库服务器断开连接时,应用可以用此函数判断事务是提交了还是中止了。注意,预备事务被报告为in progress;如果需要确定某个事务 ID 是否为预备事务,应用必须检查pg_prepared_xacts。
将文本转换为tsquery,根据指定的或默认配置对单词进行正规化。字符串中的任何标点符号都会被忽略(它不决定查询操作符)。结果查询匹配包含文本中所有非停用词的短语。
π的近似值
将文本转换为tsquery,根据指定的或默认配置对单词进行正规化。字符串中的任何标点符号都会被忽略(它们不决定查询操作符)。生成的查询匹配包含文本中所有非停用词的文档。
从它的坐标构造点。
将框转换为4点多边形。
将路径转换为开放形式。
返回substring在string中首次出现的位置;如果不存在则返回零。
a的b次幂
table_to_xml映射由参数table传递的命名表的内容。regclass类型接受使用常见标记标识表的字符串,包括可选的模式限定和双引号(详见第 8.19 节)。query_to_xml执行由参数query传递的查询并且映射结果集。cursor_to_xml从cursor指定的游标中取出指定数量的行。如果需要映射一个大型的表,我们推荐这种变体,因为每一个函数都是在内存中构建结果值的。
下面的函数产生 XML 数据映射和对应的 XML 模式,并把产生的结果链接在一起放在一个文档(或森林)中。在要求自包含和自描述的结果时,它们非常有用:
必须传入相同的参数,才能得到彼此匹配的 XML 数据映射和 XML 模式文档。
生成tsquery中可索引部分的表示。结果为空或仅为T表示该查询不可索引。
为给定字符串添加适当的引号并返回,使其可用作SQL语句字符串中的标识符。仅在必要时(即字符串包含不能用于标识符的字符,或会发生大小写折叠时)添加引号。内嵌的引号会被适当地双写。另见例 41.1。
为给定字符串添加适当的引号并返回,使其可用作SQL语句字符串中的字符串字面量。内嵌的单引号和反斜杠会被适当地双写。注意,quote_literal在输入为 null 时返回 null;如果参数可能为 null,quote_nullable通常更合适。另见例 41.1。
为给定字符串添加适当的引号并返回,使其可用作SQL语句字符串中的字符串字面量;如果参数为 null,则返回NULL。内嵌的单引号和反斜杠会被适当地双写。另见例 41.1。
将角度转换为弧度
计算圆的半径。
返回范围 0.0 <= x < 1.0 内的随机值
从具有给定参数的正态分布中返回一个随机值;mean默认为 0.0,stddev默认为 1.0。
计算非空输入值的并集。
计算非空输入值的交集。
计算包含两个给定范围的最小范围。
计算假设行的排名,允许空缺;即该行所属同等行组中第一行的行号。
返回 POSIX 正则表达式pattern在string中匹配的次数;参见第 9.7.3 节。
返回 POSIX 正则表达式pattern在string中第N次匹配的位置;如果没有这样的匹配,则返回零。参见第 9.7.3 节。
检查 POSIX 正则表达式pattern是否在string中出现;参见第 9.7.3 节。
返回 POSIX 正则表达式pattern与string的第一次匹配中的子字符串;参见第 9.7.3 节。
返回 POSIX 正则表达式pattern与string的第一次匹配中的子字符串;如果使用g标志,则返回所有匹配中的子字符串。参见第 9.7.3 节。
替换第一个与 POSIX 正则表达式pattern匹配的子字符串,如果使用了g标志,则替换所有这样的匹配;参见第 9.7.3 节。
使用POSIX正则表达式作为分隔符拆分string,生成一个结果的数组;参见第 9.7.3 节。
使用POSIX正则表达式作为分隔符拆分string,生成一组结果;参见第 9.7.3 节。
返回string中 POSIX 正则表达式pattern的第N次匹配对应的子字符串;如果没有这样的匹配,则返回NULL。参见第 9.7.3 节。
计算自变量的平均值,即sum(X)/N。
计算因变量的平均值,即sum(Y)/N。
计算两个输入都非空的行数。
计算由(X,Y)数值对确定的最小二乘拟合线性方程的 y 轴截距。
计算相关系数的平方。
计算由(X,Y)数值对确定的最小二乘拟合线性方程的斜率。
计算自变量的“平方和”,即sum(X^2) - sum(X)^2/N。
计算自变量与因变量的“乘积和”,即sum(X*Y) - sum(X) * sum(Y)/N。
计算因变量的“平方和”,即sum(Y^2) - sum(Y)^2/N。
按number指定的次数重复string。
将string中所有出现的子字符串from替换为子字符串to。
颠倒字符串中字符的顺序。
返回字符串中的最后n个字符;如果n为负数,则返回除前 |n| 个字符之外的全部字符。
舍入到最接近的整数。对于numeric,遇到恰好位于中点的情况时按远离零的方向舍入。对于double precision,中点取舍规则取决于平台,但“舍入到最接近的偶数”是最常见的规则。
返回当前行在其分区内的编号,从 1 开始计数。
在当前用户和当前环境的上下文中,指定表的行级安全是否生效?
将SQL 复合值转换为JSON对象。该行为与to_json相同,只是如果可选布尔参数为真,换行符将在顶级元素之间添加。
在string后面追加字符fill(默认为空格),将其填充到长度length。如果string已经长于length,则截断它。
从string的结尾移除仅由characters中字符(默认为空格)组成的最长字符串。
参数的小数位数(小数部分的十进制位数)
这些函数会忽略当前用户不可读的表。数据库范围的函数还会忽略当前用户没有USAGE(查找)权限的模式。
这些函数会忽略当前用户不可读的表。数据库范围的函数还会忽略当前用户没有USAGE(查找)权限的模式。
这些函数会忽略当前用户不可读的表。数据库范围的函数还会忽略当前用户没有USAGE(查找)权限的模式。
返回会话用户名。
设置二进制字符串中的编号为 n 的位为newvalue。
将二进制字符串中编号为 n 的字节设置为 newvalue。
将参数setting_name设置为new_value,并返回该值。如果is_local为true,新值仅在当前事务期间生效。如果希望新值在当前会话的剩余时间内生效,则使用false。此函数对应 SQL 命令SET。
设置inet值的子网掩码长度。地址部分不改变。
为后续的random()和random_normal()调用设置种子;参数必须在-1.0和1.0之间,包括边界值
设置序列对象的当前值,并可选地设置其is_called标志。双参数形式将序列的last_value字段设置为指定的值,并将其is_called字段设置为true,意味着下一个nextval将在返回值之前推进序列。currval将报告的值也设置为指定的值。在三参数形式中,is_called可以设置为true 或 false。true与双参数形式具有相同的效果。如果设置为false,下一个nextval将返回指定的值,序列推进从再下一次调用nextval开始。而且,currval报告的值在这种情况下不会改变。例如:
将指定的weight赋给vector的每个元素。
计算二进制字符串的 SHA-224 hash。
计算二进制字符串的 SHA-256 hash。
计算二进制字符串的 SHA-384 hash。
计算二进制字符串的 SHA-512 hash。
返回共享数据库对象的注释,对象由其 OID 和所在系统目录的名称指定。此函数与obj_description类似,但用于获取共享对象(即数据库、角色和表空间)的注释。有些系统目录由数据库集簇中的所有数据库全局共享,其中对象的描述也全局存储。
参数的符号(-1、0 或 +1)
正弦,参数为弧度
正弦,参数为度数
双曲正弦
计算通过两点所画直线的斜率。
在出现delimiter时拆分string,并返回第n个字段(从一开始计数);如果n为负数,则返回倒数第 |n| 个字段。
平方根
如果 string 以 prefix开始就返回真。
当前日期和时间(当前语句开始时);参见第 9.9.5 节
这是stddev_samp的一个历史别名。
计算输入值的总体标准差。
计算输入值的样本标准差。
将非 NULL 输入值连接成一个字符串。在第一个值之后,每个值前面都会放置相应的delimiter(如果它不为 NULL)。
将string按delimiter分割,并将结果字段形成text数组。如果delimiter是NULL,则string中的每个字符将成为数组中的一个单独元素。如果delimiter是空字符串,则string被视为单个字段。如果提供了null_string且不是NULL,则匹配该字符串的字段将被NULL替换。另请参见array_to_string。
在出现delimiter 时拆分string,并将结果字段作为text行的集合返回。如果delimiter为NULL,则string中的每个字符将成为结果的单独一行。如果delimiter为空字符串,则将string视为单个字段。如果提供了null_string,并且不是NULL,则匹配该字符串的字段将被NULL替换。
从tsvector中移除位置和权重。
返回substring在string中首次出现的位置;如果不存在则返回零。(与position(substring in string)相同,但请注意参数顺序相反。)
提取string中从第start个字符开始的子字符串;若指定了长度,则提取count个字符。(与substring(string from start for count)相同。)
提取string的子字符串:若指定了起始位置,则从第start个字符开始;若指定了长度,则在提取count个字符后停止。start和count至少需要指定一个。
计算非空输入值的总和。
抑制不改变数据的更新操作。详见下文。
返回用户在被分配数据库角色之前,于认证周期中提供的认证方法和身份(如果有)。结果表示为 auth_method:identity;如果用户未被认证(例如使用了Trust 认证),则返回 NULL。
table_to_xml映射由参数table传递的命名表的内容。regclass类型接受使用常见标记标识表的字符串,包括可选的模式限定和双引号(详见第 8.19 节)。query_to_xml执行由参数query传递的查询并且映射结果集。cursor_to_xml从cursor指定的游标中取出指定数量的行。如果需要映射一个大型的表,我们推荐这种变体,因为每一个函数都是在内存中构建结果值的。
下面的函数产生 XML 数据映射和对应的 XML 模式,并把产生的结果链接在一起放在一个文档(或森林)中。在要求自包含和自描述的结果时,它们非常有用:
必须传入相同的参数,才能得到彼此匹配的 XML 数据映射和 XML 模式文档。
正切,参数为弧度
正切,参数为度数
双曲正切
以文本形式返回未缩写的IP地址和子网掩码长度。(这与显式转换为text的结果相同。)
当前的日期和时间(类似 clock_timestamp,但是采用 text 字符串);参见第 9.9.5 节
将string从其他编码转换为ASCII,源编码可以用名称或编号指定。如果省略encoding,则使用数据库编码(实际上,这也是唯一有用的情况)。转换主要是去除重音符号。只支持从LATIN1、LATIN2、LATIN9和WIN1250编码转换。(另一种更灵活的解决方案参见unaccent模块。)
将数字转换为等价的二进制补码表示。
根据给定的格式将时间戳转换为字符串。
根据给定的格式将字符串转换为日期。
将数字转换为等价的十六进制补码表示。
将任何SQL值转换为json或jsonb。数组和复合值递归地转换为数组和对象(多维数组在JSON中变成数组的数组)。否则,如果存在从SQL数据类型到json的类型转换,则类型转换函数将用于执行转换;[a] 否则,将生成一个标量 JSON 值。对于除数字、布尔值或空值之外的任何标量,将使用文本表示,并根据需要进行转义,使其成为有效的JSON字符串值。
将任何SQL值转换为json或jsonb。数组和复合值递归地转换为数组和对象(多维数组在JSON中变成数组的数组)。否则,如果存在从SQL数据类型到json的类型转换,则类型转换函数将用于执行转换;[a] 否则,将生成一个标量 JSON 值。对于除数字、布尔值或空值之外的任何标量,将使用文本表示,并根据需要进行转义,使其成为有效的JSON字符串值。
根据给定的格式将字符串转换为数值。
将数字转换为等价的八进制补码表示。
将文本关系名转换为它的OID。通过将字符串类型转换为regclass可以得到类似的结果(参见第 8.19 节);但是,如果没有找到名称,这个函数将返回NULL而不会抛出错误。
将文本排序规则名称转换为它的OID。通过将字符串类型转换为regcollation(参见第 8.19 节)可以得到类似的结果;但是,如果没有找到名称,这个函数将返回NULL而不会抛出错误。
将文本模式名转换为它的OID。通过将字符串转换为regnamespace类型(参见第 8.19 节)可以得到类似的结果;但是,如果没有找到名称,这个函数将返回NULL而不会抛出错误。
将文本操作符名称转换为它的OID。通过将字符串类型转换为regoper(参见第 8.19 节)可以得到类似的结果;但是,如果找不到名称或名称有多义性,该函数将返回NULL而不会抛出错误。
将文本操作符名称(带有参数类型)转换为其OID。通过将字符串转换为regoperator类型(参见第 8.19 节)可以得到类似的结果;但是,如果没有找到名称,这个函数将返回NULL而不会抛出错误。
将文本函数或过程名转换为其OID。通过将字符串转换为regproc类型(参见第 8.19 节)可以得到类似的结果;但是,如果找不到名称或名称有多义性,该函数将返回NULL而不会抛出错误。
将文本函数或过程名(带有参数类型)转换为其OID。通过将字符串类型转换为regprocedure可以得到类似的结果(参见第 8.19 节);但是,如果没有找到名称,这个函数将返回NULL而不会抛出错误。
将文本角色名转换为它的OID。通过将字符串类型转换为regrole可以得到类似的结果(参见第 8.19 节);但是,如果没有找到名称,这个函数将返回NULL而不会抛出错误。
解析文本字符串,从中提取可能的类型名,并将该名称转换为类型 OID。字符串中的语法错误会导致报错;但如果字符串是语法有效的类型名,只是在系统目录中找不到该类型,结果就是 NULL。将字符串转换为 regtype 类型也能得到类似的结果(参见第 8.19 节),区别在于类型转换会在找不到名称时报错。
解析文本字符串,从中提取可能的类型名称,并转换其类型修饰符(如果有)。字符串中的语法错误会引发错误;但如果字符串是语法有效的类型名称,只是在系统目录中找不到,则结果为NULL。如果没有类型修饰符,则结果为-1。
根据给定的格式将字符串转换为时间戳。(也请参见表 9.33中的to_timestamp(double precision)。)
将文本转换为tsquery,根据指定的或默认配置对单词进行正规化。单词必须由有效的tsquery操作符组合。
将文本转换为tsvector,根据指定的或默认配置对单词进行正规化。结果中包含位置信息。
当前日期和时间(当前事务开始时);参见第 9.9.5 节
将string中与from集合中匹配的每个字符替换为to集合中相应的字符。如果from长于to,输入中出现的from中的额外字符会被删除。
从string的开始、末端或两端(默认为BOTH)移除仅包含characters(默认为空格)字符的最长字符串。
通过删除最后的n个元素来裁剪数组。如果数组是多维的,则只裁剪第一个维度。
通过移除尾随零来减少值的小数位数
向零截断为整数
根据指定的或默认的文本检索配置从document中提取和正规化词元,并返回关于每个词元是如何处理的信息。详情参见第 12.8.1 节。
从vector中删除给定的lexeme的所有出现。lexeme字符串被视为原样的词位,不经过进一步处理。
只从vector中选择具有给定weights的元素。
以缩略形式显示query在document中的匹配项;后者必须是原始文本,不能是tsvector。在匹配查询之前,文档中的单词将根据指定的或默认配置进行正规化。第 12.3.4 节中讨论了该函数的使用,还描述了可用的options。
如果词典识别输入词元,则返回由替换词位组成的数组;如果词典识别该词元,但它是停用词,则返回空数组;如果词典无法识别该词元,则返回NULL。详情参见第 12.8.3 节。
使用指定名称的解析器从document中提取词元。详情参见第 12.8.2 节。
计算一个分数,显示vector与query的匹配程度。详情请参见第 12.3.3 节。
使用覆盖密度算法计算一个分数,显示vector与query的匹配程度。详情参见第 12.3.3 节。
在query中使用 substitute替换出现的target。详情参见第 12.4.2.1 节。
执行sqlquery,该查询必须返回单个tsvector列,并返回数据中每个不同词位的统计信息。详情参见第 12.4.4 节。
返回一个表,该表描述指定名称的解析器可以识别的每种类型的词元。详情参见第 12.8.2 节。
构造一个短语查询,在连续的词位上搜索query1和query2的匹配项(与<->操作符相同)。
将tsvector转换为词位的数组。
根据关联的纯文本文档列自动更新tsvector列。所用的全文检索配置以名称形式指定为触发器参数。详见第 12.4.3 节。
根据关联的纯文本文档列自动更新tsvector列。所用的全文检索配置取自表的regconfig列。详见第 12.4.3 节。
参见 pg_current_xact_id()。
参见 pg_current_xact_id_if_assigned()。
参见 pg_current_snapshot()。
参见 pg_snapshot_xip()。
参见 pg_snapshot_xmax()。
参见 pg_snapshot_xmin()。
参见 pg_xact_status()。
参见 pg_visible_in_snapshot()。
如果字符串中的所有字符都是已分配的 Unicode 码点,则返回true;否则返回false。此函数只能在服务器编码为UTF8时使用。
返回一个表示PostgreSQL所使用的 Unicode 版本的字符串。
解析参数中转义的 Unicode 字符。Unicode字符可以被指定为\XXXX(4 个十六进制数字),\+XXXXXX(6 个十六进制数字),\uXXXX(4 个十六进制数字),或\UXXXXXXXX(8 个十六进制数字)。要指定反斜杠,请写入两个反斜杠。所有其他字符均按字面解释。
将tsvector展开为一组行,每行对应一个词位。
根据数据库的区域设置规则,将字符串转换为全部大写。
范围的上界是否包含在内?
范围是否没有上界?(上界为Infinity时返回假。)
这个相当于 current_user。
从版本 1 或 7 的 UUID 中提取 timestamp with time zone。对于其他版本,该函数返回 null。注意,提取出的时间戳不一定与 UUID 生成时刻完全一致;这取决于生成该 UUID 的实现。
从符合 RFC 9562 所描述某一变体的 UUID 中提取版本号。对于其他变体,该函数返回 null。例如,对于由gen_random_uuid()生成的 UUID,该函数将返回 4。
生成一个版本 4(随机)的 UUID
生成一个版本 7(按时间排序)的 UUID。其时间戳由 UNIX 时间戳(毫秒精度)加上亚毫秒时间戳和随机值计算得到。可选参数 shift会按给定的interval 偏移计算出的时间戳。不接受无穷 interval 值。偏移后的时间戳必须位于 UUID 版本 7 的 48 位毫秒时间戳字段所支持的范围内:从 1970-01-01 00:00:00 UTC 到大约 10889 年。如果结果时间戳超出此范围,则会引发错误。
计算输入值的总体方差(总体标准差的平方)。
计算输入值的样本方差(样本标准差的平方)。
这是 var_samp 的一个历史别名。
返回描述PostgreSQL 服务器版本的字符串。你还可以从server_version获得此信息,或者对于机器可读的版本,使用server_version_num。软件开发人员应该使用server_version_num(自 8.2 起可用)或PQserverVersion,而不是解析文本版本。
将文本转换为tsquery,根据指定的或默认配置对单词进行正规化。带引号的单词序列被转换为短语测试。“or”一词产生 OR 操作符,短横线产生 NOT 操作符;其他标点符号会被忽略。这类似于一些常见网络搜索工具的行为。
计算框的水平大小。
返回直方图中包含 operand 的桶编号。该直方图把 low 到 high 的范围划分为 count 个等宽桶。各桶包含下边界、不包含上边界。对于小于 low 的输入,返回 0;对于大于等于 high 的输入,返回 count+1。如果 low > high,行为会镜像反转,此时桶 1 表示刚好位于 low 下方的那个桶,并且包含边界的一侧改为上边界。
这些函数检查一个text串是不是一个良构的 XML,返回一个布尔结果。xml_is_well_formed_document检查一个良构的文档,而xml_is_well_formed_content检查良构的内容。如果xmloption配置参数被设置为DOCUMENT,xml_is_well_formed会做第一个函数的工作;如果配置参数被设置为CONTENT,xml_is_well_formed会做第二个函数的工作。这意味着xml_is_well_formed对于检查一个到类型xml的简单类型转换是否会成功非常有用,而其他两个函数对于检查XMLPARSE的对应变体是否会成功有用。
这些函数检查一个text串是不是一个良构的 XML,返回一个布尔结果。xml_is_well_formed_document检查一个良构的文档,而xml_is_well_formed_content检查良构的内容。如果xmloption配置参数被设置为DOCUMENT,xml_is_well_formed会做第一个函数的工作;如果配置参数被设置为CONTENT,xml_is_well_formed会做第二个函数的工作。这意味着xml_is_well_formed对于检查一个到类型xml的简单类型转换是否会成功非常有用,而其他两个函数对于检查XMLPARSE的对应变体是否会成功有用。
这些函数检查一个text串是不是一个良构的 XML,返回一个布尔结果。xml_is_well_formed_document检查一个良构的文档,而xml_is_well_formed_content检查良构的内容。如果xmloption配置参数被设置为DOCUMENT,xml_is_well_formed会做第一个函数的工作;如果配置参数被设置为CONTENT,xml_is_well_formed会做第二个函数的工作。这意味着xml_is_well_formed对于检查一个到类型xml的简单类型转换是否会成功非常有用,而其他两个函数对于检查XMLPARSE的对应变体是否会成功有用。
和这里描述的其他函数不同,函数xmlagg是一个聚合函数。它将聚合函数调用的输入值串接起来,非常像xmlconcat所做的事情,除了串接是跨行发生的而不是在单一行的多个表达式上发生。聚合函数的更多信息请见第 9.21 节。
函数xmlcomment创建了一个 XML 值,它包含一个使用指定文本作为内容的 XML 注释。该文本不能包含“--”,也不能以“-”结尾,否则该结果的结构不是一个合法的 XML 注释。如果参数为空,结果也为空。
函数xmlconcat将由各个独立 XML 值组成的列表串接成一个单独的值,这个值包含一个 XML 内容片断。空值会被忽略,只有当没有参数为非空时结果才为空。
表达式xmlelement使用给定名称、属性和内容产生一个 XML 元素。语法中显示的name和attname项是简单的标识符,而不是值。attvalue和content项是表达式,它们可以产生任意PostgreSQL数据类型的值。XMLATTRIBUTES的参数生成XML元素的属性;将content值连接起来形成其内容。
表达式xmlforest使用给定名称和内容产生由元素构成的 XML 森林(序列)。与xmlelement一样,每个name都必须是一个简单的标识符,而content表达式可以有任何数据类型。
表达式xmlpi创建一个 XML 处理指令。与xmlelement一样,name必须是一个简单的标识符,而content表达式可以有任何数据类型。如果存在,content不能包含字符序列?>。
表达式xmlroot修改一个 XML 值的根节点的属性。如果指定了一个版本,它会替换根节点的版本声明中的值;如果指定了一个独立设置,它会替换根节点的独立声明中的值。
函数 xmltext 返回一个只包含单个文本节点的 XML 值,该文本节点的内容就是输入参数。预定义实体,例如和号(&)、左右尖括号(< >)以及引号(""),都会被转义。
函数xpath根据 XML 值xml计算 XPath 1.0 表达式xpath(以文本形式给出)。它返回一个 XML 值的数组,该数组对应于该 XPath 表达式产生的节点集合。如果该 XPath 表达式返回一个标量值而不是一个节点集合,将会返回一个单一元素的数组。
函数xpath_exists是xpath函数的一种特殊形式。这个函数不是返回满足 XPath 1.0 表达式的各个 XML 值,它返回一个布尔值表示查询是否被满足(具体来说,它是否产生了空节点集以外的任何值)。这个函数等价于标准的XMLEXISTS谓词,不过它还提供了对一个名字空间映射参数的支持。