百科 / 函数百科 / JSON 函数和操作符
FUNCTIONJSON 函数和操作符
array_to_json
将 SQL 数组转换为 JSON 数组。该行为与 to_json 相同,只是如果可选布尔参数为真,换行符将在顶级数组元素之间添加。
Converts an SQL array to a JSON array.
JSON 函数和操作符 引入 9.2 现存至 20 devel 1 条签名 2 次签名变更
- 分组
- JSON 函数和操作符
- 签名数
- 1 条
- 引入版本
- 9.2
- 状态
- 现存
- 签名变更
- 2 次
- 本版来源
- 英文原文
版本轨迹
相对 PostgreSQL 17 无变化。
说明
to_json 相同,只是如果可选布尔参数为真,换行符将在顶级数组元素之间添加。array_to_json ( anyarray [, boolean] ) → json将 SQL 数组转换为 JSON 数组。该行为与
to_json 相同,只是如果可选布尔参数为真,换行符将在顶级数组元素之间添加。签名
PostgreSQL 18.7 里 array_to_json 的 1 条签名,按上游手册顺序排列。参数名用斜体,类型用弱化色, 之后是返回类型。中文说明来自同版本手册与审阅译文,悬停可查看每条说明的来源。
-
array_to_json(anyarray[,boolean] ) →json将 SQL 数组转换为 JSON 数组。该行为与to_json相同,只是如果可选布尔参数为真,换行符将在顶级数组元素之间添加。array_to_json('{{1,5},{99,100}}'::int[])[[1,5],[99,100]]
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的签名。
-
PostgreSQL 14 ← 13 说明更新
说明更新
-
PostgreSQL 13 ← 12 手册重排
这一跳手册重排了函数表的写法,签名文本整体改写,只记函数的增删,不逐条比较签名。
-
PostgreSQL 9.4 ← 9.3 签名变更
array_to_json ( anyarray [, pretty_bool] )array_to_json ( anyarray [, pretty_bool] ) → json说明更新 -
PostgreSQL 9.3 ← 9.2 签名变更
array_to_json ( anyarray [, pretty_bool] ) → jsonarray_to_json ( anyarray [, pretty_bool] ) -
PostgreSQL 9.2 ← 9.1 新增此函数
PostgreSQL 9.2 起可用
签名矩阵
每条签名在给出了签名的 16 个版本里的存在情况;方格指向该版的签名。只在正文里提到此函数、没有给出签名的版本不列进来,上面的版本轨迹里仍然有它们。签名文本在 PostgreSQL 13 前后写法不同,跨越那一跳的同一条签名会显示成两行。
存在 不存在
| 签名 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
array_to_json ( anyarray [, pretty_bool] ) |
存在 | 不存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 |
array_to_json ( anyarray [, pretty_bool] ) → json |
不存在 | 存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 |
array_to_json ( anyarray [, boolean ] ) → json |
不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 |
同组函数
| 函数 | 签名 | 主签名 | 版本变动 | 最近变更 |
|---|---|---|---|---|
array_to_json |
1 | array_to_json ( anyarray [, boolean ] ) → json |
9.42 次 | |
| 将 SQL 数组转换为 JSON 数组。该行为与 to_json 相同,只是如果可选布尔参数为真,换行符将在顶级数组元素之间添加。 | 现存 | |||
json |
1 | json ( expression [ FORMAT JSON [ ENCODING UTF8 ]] [ { WITH | WITHOUT } UNIQUE [ KEYS ]] ) → json |
— | |
| 将给定的 text 或 bytea 字符串表达式(采用 UTF8 编码)转换为 JSON 值。如果 expression 为 NULL,则返回 SQL 空值。如果指定了 WITH UNIQUE,则 expression 不能包含重复的对象键。 | 现存 | |||
json_array |
2 | json_array ( [ { value_expression [ FORMAT JSON ] } [, ...] ] [ { NULL | ABSENT } ON NULL ] [ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ] ] ]) |
— | |
| 从一系列 value_expression 参数或 query_expression 的结果构造 JSON 数组;后者必须是返回单列的 SELECT 查询。如果指定了 ABSENT ON NULL,则忽略 NULL 值。使用 query_expression 时始终如此。如果查询不返回任何行,则返回空 JSON 数组。 | 现存 | |||
json_array_elements |
1 | json_array_elements ( json ) → setof json |
9.41 次 | |
| 将顶级 JSON 数组展开为一组 JSON 值。 | 现存 | |||
json_array_elements_text |
1 | json_array_elements_text ( json ) → setof text |
— | |
| 将顶级 JSON 数组展开为一组 text 值。 | 现存 | |||
json_array_length |
1 | json_array_length ( json ) → integer |
— | |
| 返回顶级 JSON 数组中的元素数量。 | 现存 | |||
json_build_array |
1 | json_build_array ( VARIADIC "any" ) → json |
— | |
| 根据可变参数列表构建可能异构类型的 JSON 数组。每个参数都按照 to_json 或 to_jsonb 进行转换。 | 现存 | |||
json_build_object |
1 | json_build_object ( VARIADIC "any" ) → json |
— | |
| 根据可变参数列表构建一个 JSON 对象。按照惯例,参数列表由交替的键和值组成。键参数会被强制转换为文本;值参数则按照 to_json 或 to_jsonb 进行转换。 | 现存 | |||
json_each |
1 | json_each ( json ) → setof record ( key text, value json ) |
9.41 次 | |
| 将顶级 JSON 对象展开为一组键/值对。 | 现存 | |||
json_each_text |
1 | json_each_text ( json ) → setof record ( key text, value text ) |
9.41 次 | |
| 将顶级 JSON 对象展开为一组键/值对。返回的 value 的类型为 text。 | 现存 | |||
JSON_EXISTS |
1 | JSON_EXISTS ( context_item, path_expression [PASSING { value AS varname } [, ...]] [{ TRUE | FALSE | UNKNOWN | ERROR } ON ERROR]) → boolean |
— | |
| 如果将 SQL/JSON path_expression 应用于 context_item 后产生了任何项,则返回 true,否则返回 false。 | 现存 | |||
json_extract_path |
1 | json_extract_path ( from_json json, VARIADIC path_elems text[] ) → json |
— | |
| 在指定路径下提取 JSON 子对象。(这在功能上相当于#> 操作符,但在某些情况下,将路径写成可变参数列表会更方便。) | 现存 | |||
json_extract_path_text |
1 | json_extract_path_text ( from_json json, VARIADIC path_elems text[] ) → text |
— | |
| 将指定路径上的 JSON 子对象提取为 text。(这在功能上等同于#>> 操作符。) | 现存 | |||
json_object |
3 | json_object ( [ { key_expression { VALUE | ':' } value_expression [ FORMAT JSON [ ENCODING UTF8 ] ] }[, ...] ] [ { NULL | ABSENT } ON NULL ] [ { WITH | WITHOUT } UNIQUE [ KEYS ] ] [ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ] ] ]) |
161 次 | |
| 根据给定的所有键值对构造 JSON 对象;如果没有给出键值对,则构造空对象。key_expression 是定义 JSON 键的标量表达式,会被转换为 text 类型。它不能为 NULL,其类型也不能具有到 json 的类型转换。如果指定了 WITH UNIQUE KEYS,则 key_expression 不能重复。如果指定了 ABSENT ON NULL,则 value_expression 求值为 NULL 的键值对会从输出中省略;如果指定了 NULL ON NULL 或省略了该子句,则保留该键,并将其值设为 NULL。 | 现存 | |||
json_object_keys |
1 | json_object_keys ( json ) → setof text |
9.41 次 | |
| 返回顶级 JSON 对象中的键集合。 | 现存 | |||
json_populate_record |
1 | json_populate_record ( base anyelement, from_json json ) → anyelement |
9.41 次 | |
| 将顶级 JSON 对象展开为一行,其复合类型与 base 参数相同。系统会扫描该 JSON 对象,查找名称与输出行类型列名匹配的字段,并将其值插入输出中的对应列。(不对应任何输出列名的字段会被忽略。)在典型用法中,base 的值就是 NULL,这意味着凡是不匹配对象字段的输出列都会被填充为空值。但是,如果 base 不是 NULL,那么其中包含的值将用于那些不匹配的列。 | 现存 | |||
json_populate_recordset |
1 | json_populate_recordset ( base anyelement, from_json json ) → setof anyelement |
9.41 次 | |
| 将由对象组成的顶级 JSON 数组展开为一组行,其复合类型与 base 参数相同。JSON 数组中的每个元素都按照上文对 json[b]_populate_record 的说明进行处理。 | 现存 | |||
JSON_QUERY |
1 | JSON_QUERY ( context_item, path_expression [PASSING { value AS varname } [, ...]] [RETURNING data_type [FORMAT JSON [ENCODING UTF8] ] ] [ { WITHOUT | WITH { CONDITIONAL | [UNCONDITIONAL] } } [ARRAY] WRAPPER] [ { KEEP | OMIT } QUOTES [ON SCALAR STRING] ] [ { ERROR | NULL | EMPTY { [ARRAY] | OBJECT } | DEFAULT expression } ON EMPTY] [ { ERROR | NULL | EMPTY { [ARRAY] | OBJECT } | DEFAULT expression } ON ERROR]) → jsonb |
— | |
| 返回将 SQL/JSON path_expression 应用于 context_item 的结果。 | 现存 | |||
json_scalar |
1 | json_scalar ( expression ) |
— | |
| 将给定的 SQL 标量值转换为 JSON 标量值。如果输入为 NULL,则返回 SQL 空值。如果输入是数字或布尔值,则返回相应的 JSON 数字或布尔值。对于其他值,则返回 JSON 字符串。 | 现存 | |||
json_serialize |
1 | json_serialize ( expression [ FORMAT JSON [ ENCODING UTF8 ] ] [ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ] ] ] ) |
— | |
| 将 SQL/JSON 表达式转换为字符或二进制字符串。expression 可以是任意 JSON 类型、任意字符串类型,或采用 UTF8 编码的 bytea。 RETURNING 中使用的返回类型可以是任意字符串类型或 bytea,默认为 text。 | 现存 | |||
json_strip_nulls |
1 | json_strip_nulls ( target json [,strip_in_arrays boolean ] ) → json |
181 次 | |
| 递归地删除给定 JSON 值中所有值为 null 的对象字段。如果 strip_in_arrays 为 true(默认值为 false),那么数组中的 null 元素也会被删除;否则不会删除。裸露的 null 值永远不会被删除。 | 现存 | |||
JSON_TABLE |
1 | JSON_TABLE ( context_item, path_expression [ AS json_path_name] [ PASSING { value AS varname } [, ...] ] COLUMNS ( json_table_column [, ...] ) [ PLAN ( json_table_plan ) | PLAN DEFAULT ( { OUTER | INNER } [ , { CROSS | UNION } ] | { CROSS | UNION } [ , { OUTER | INNER } ] ) ] [ { ERROR | EMPTY [ARRAY]} ON ERROR] ) |
201 次 | |
| 下面更详细地说明每个语法元素。 | 现存 | |||
json_to_record |
1 | json_to_record ( json ) → record |
— | |
| 将顶级 JSON 对象展开为具有由 AS 子句定义的复合类型的行。(与所有返回 record 的函数一样,调用查询必须使用 AS 子句显式定义记录的结构。)输出记录由 JSON 对象的字段填充,与上面描述的 json[b]_populate_record 的方式相同。由于没有输入记录值,不匹配的列总是用空值填充。 | 现存 | |||
json_to_recordset |
1 | json_to_recordset ( json ) → setof record |
— | |
| 将顶级 JSON 对象数组展开为一组由 AS 子句定义的复合类型的行。(与所有返回 record 的函数一样,调用查询必须使用 AS 子句显式定义记录的结构。)JSON 数组中的每个元素都按照上文对 json[b]_populate_record 的说明进行处理。 | 现存 | |||
json_typeof |
1 | json_typeof ( json ) → text |
— | |
| 以文本字符串形式返回顶级 JSON 值的类型。可能的类型有 object、array、string、number、boolean 和 null。(null 的结果不应与 SQL NULL 混淆;参见示例。) | 现存 | |||
JSON_VALUE |
1 | JSON_VALUE ( context_item, path_expression [PASSING { value AS varname } [, ...]] [RETURNING data_type] [ { ERROR | NULL | DEFAULT expression } ON EMPTY] [ { ERROR | NULL | DEFAULT expression } ON ERROR]) → text |
— | |
| 返回将 SQL/JSON path_expression 应用于 context_item 的结果。 | 现存 | |||
jsonb_array_elements |
1 | jsonb_array_elements ( jsonb ) → setof jsonb |
— | |
| 将顶级 JSON 数组展开为一组 JSON 值。 | 现存 | |||
jsonb_array_elements_text |
1 | jsonb_array_elements_text ( jsonb ) → setof text |
— | |
| 将顶级 JSON 数组展开为一组 text 值。 | 现存 | |||
jsonb_array_length |
1 | jsonb_array_length ( jsonb ) → integer |
— | |
| 返回顶级 JSON 数组中的元素数量。 | 现存 | |||
jsonb_build_array |
1 | jsonb_build_array ( VARIADIC "any" ) → jsonb |
— | |
| 根据可变参数列表构建可能异构类型的 JSON 数组。每个参数都按照 to_json 或 to_jsonb 进行转换。 | 现存 | |||
jsonb_build_object |
1 | jsonb_build_object ( VARIADIC "any" ) → jsonb |
— | |
| 根据可变参数列表构建一个 JSON 对象。按照惯例,参数列表由交替的键和值组成。键参数会被强制转换为文本;值参数则按照 to_json 或 to_jsonb 进行转换。 | 现存 | |||
jsonb_each |
1 | jsonb_each ( jsonb ) → setof record ( key text, value jsonb ) |
— | |
| 将顶级 JSON 对象展开为一组键/值对。 | 现存 | |||
jsonb_each_text |
1 | jsonb_each_text ( jsonb ) → setof record ( key text, value text ) |
— | |
| 将顶级 JSON 对象展开为一组键/值对。返回的 value 的类型为 text。 | 现存 | |||
jsonb_extract_path |
1 | jsonb_extract_path ( from_json jsonb, VARIADIC path_elems text[] ) → jsonb |
— | |
| 在指定路径下提取 JSON 子对象。(这在功能上相当于#> 操作符,但在某些情况下,将路径写成可变参数列表会更方便。) | 现存 | |||
jsonb_extract_path_text |
1 | jsonb_extract_path_text ( from_json jsonb, VARIADIC path_elems text[] ) → text |
— | |
| 将指定路径上的 JSON 子对象提取为 text。(这在功能上等同于#>> 操作符。) | 现存 | |||
jsonb_insert |
1 | jsonb_insert ( target jsonb, path text[], new_value jsonb [, insert_after boolean ] ) → jsonb |
— | |
| 返回插入 new_value 的 target。如果 path 指派的项是一个数组元素,则当 insert_after 为假(此为默认值)时,new_value 将被插入到该项之前;当 insert_after 为真时,则插入到该项之后。如果由 path 指派的项是一个对象字段,则只在对象不包含该键时才插入 new_value。路径中的所有前面步骤都必须存在,否则将不加改变地返回 target。与面向路径的操作符一样,path 中的负整数从 JSON 数组末尾计数。如果最后一个路径步骤是超出范围的数组下标,那么当下标为负时,新值会被添加到数组开头;当下标为正时,新值会被添加到数组末尾。 | 现存 | |||
jsonb_object |
2 | jsonb_object ( text[] ) → jsonb |
— | |
| 从 text 数组构造 JSON 对象。该数组必须是一维且包含偶数个成员,此时将成员按交替的键/值对处理;或者是二维数组,且每个内部数组恰好有两个元素,将这两个元素作为一个键/值对。所有值都转换为 JSON 字符串。 | 现存 | |||
jsonb_object_keys |
1 | jsonb_object_keys ( jsonb ) → setof text |
— | |
| 返回顶级 JSON 对象中的键集合。 | 现存 | |||
jsonb_path_exists |
1 | jsonb_path_exists ( target jsonb, path jsonpath [, vars jsonb [, silent boolean ]] ) → boolean |
— | |
| 检查 JSON 路径是否为指定的 JSON 值返回任何项。(这只对 SQL 标准 JSON 路径表达式有用,而不适用于谓词检查表达式,因为后者总是返回一个值。)如果指定了 vars 参数,则它必须是一个 JSON 对象,并且它的字段提供要替换到 jsonpath 表达式中的具名值。如果指定了 silent 参数并为 true,函数会抑制与@? 和 @@操作符相同的错误。 | 现存 | |||
jsonb_path_exists_tz |
1 | jsonb_path_exists_tz ( target jsonb, path jsonpath [, vars jsonb [, silent boolean ]] ) → boolean |
— | |
| 这些函数的作用类似于上面描述的没有_tz 后缀的对应函数,不同之处在于这些函数支持需要时区感知转换的日期/时间值的比较。下面的示例需要将仅日期值 2015-08-02 解释为带有时区的时间戳,因此结果取决于当前的 TimeZone 设置。由于这种依赖性,这些函数被标记为稳定的,这意味着这些函数不能用于索引。它们的对应函数是不可变的,因此可以用于索引;但如果要求进行这样的比较,它们将抛出错误。 | 现存 | |||
jsonb_path_match |
1 | jsonb_path_match ( target jsonb, path jsonpath [, vars jsonb [, silent boolean ]] ) → boolean |
— | |
| 返回指定 JSON 值的 JSON 路径谓词检查的 SQL 布尔结果。(这只对谓词检查表达式有用,而不适用于 SQL 标准 JSON 路径表达式,因为如果路径结果不是单个布尔值,它将失败或返回 NULL。)可选的 vars 和 silent 参数的作用与 jsonb_path_exists 相同。 | 现存 | |||
jsonb_path_match_tz |
1 | jsonb_path_match_tz ( target jsonb, path jsonpath [, vars jsonb [, silent boolean ]] ) → boolean |
— | |
| 这些函数的作用类似于上面描述的没有_tz 后缀的对应函数,不同之处在于这些函数支持需要时区感知转换的日期/时间值的比较。下面的示例需要将仅日期值 2015-08-02 解释为带有时区的时间戳,因此结果取决于当前的 TimeZone 设置。由于这种依赖性,这些函数被标记为稳定的,这意味着这些函数不能用于索引。它们的对应函数是不可变的,因此可以用于索引;但如果要求进行这样的比较,它们将抛出错误。 | 现存 | |||
jsonb_path_query |
1 | jsonb_path_query ( target jsonb, path jsonpath [, vars jsonb [, silent boolean ]] ) → setof jsonb |
— | |
| 为指定的 JSON 值返回由 JSON 路径返回的所有 JSON 项。对于 SQL 标准 JSON 路径表达式,它返回从 target 中选出的 JSON 值。对于谓词检查表达式,它返回谓词检查的结果:true、false 或 null。可选的 vars 和 silent 参数的作用与 jsonb_path_exists 相同。 | 现存 | |||
jsonb_path_query_array |
1 | jsonb_path_query_array ( target jsonb, path jsonpath [, vars jsonb [, silent boolean ]] ) → jsonb |
— | |
| 以 JSON 数组的形式返回由 JSON 路径为指定的 JSON 值返回的所有 JSON 项。参数与 jsonb_path_query 相同。 | 现存 | |||
jsonb_path_query_array_tz |
1 | jsonb_path_query_array_tz ( target jsonb, path jsonpath [, vars jsonb [, silent boolean ]] ) → jsonb |
— | |
| 这些函数的作用类似于上面描述的没有_tz 后缀的对应函数,不同之处在于这些函数支持需要时区感知转换的日期/时间值的比较。下面的示例需要将仅日期值 2015-08-02 解释为带有时区的时间戳,因此结果取决于当前的 TimeZone 设置。由于这种依赖性,这些函数被标记为稳定的,这意味着这些函数不能用于索引。它们的对应函数是不可变的,因此可以用于索引;但如果要求进行这样的比较,它们将抛出错误。 | 现存 | |||
jsonb_path_query_first |
1 | jsonb_path_query_first ( target jsonb, path jsonpath [, vars jsonb [, silent boolean ]] ) → jsonb |
— | |
| 为指定的 JSON 值返回由 JSON 路径返回的第一个 JSON 项。如果没有结果则返回 NULL。参数与 jsonb_path_query 相同。 | 现存 | |||
jsonb_path_query_first_tz |
1 | jsonb_path_query_first_tz ( target jsonb, path jsonpath [, vars jsonb [, silent boolean ]] ) → jsonb |
— | |
| 这些函数的作用类似于上面描述的没有_tz 后缀的对应函数,不同之处在于这些函数支持需要时区感知转换的日期/时间值的比较。下面的示例需要将仅日期值 2015-08-02 解释为带有时区的时间戳,因此结果取决于当前的 TimeZone 设置。由于这种依赖性,这些函数被标记为稳定的,这意味着这些函数不能用于索引。它们的对应函数是不可变的,因此可以用于索引;但如果要求进行这样的比较,它们将抛出错误。 | 现存 | |||
jsonb_path_query_tz |
1 | jsonb_path_query_tz ( target jsonb, path jsonpath [, vars jsonb [, silent boolean ]] ) → setof jsonb |
— | |
| 这些函数的作用类似于上面描述的没有_tz 后缀的对应函数,不同之处在于这些函数支持需要时区感知转换的日期/时间值的比较。下面的示例需要将仅日期值 2015-08-02 解释为带有时区的时间戳,因此结果取决于当前的 TimeZone 设置。由于这种依赖性,这些函数被标记为稳定的,这意味着这些函数不能用于索引。它们的对应函数是不可变的,因此可以用于索引;但如果要求进行这样的比较,它们将抛出错误。 | 现存 | |||
jsonb_populate_record |
1 | jsonb_populate_record ( base anyelement, from_json jsonb ) → anyelement |
— | |
| 将顶级 JSON 对象展开为一行,其复合类型与 base 参数相同。系统会扫描该 JSON 对象,查找名称与输出行类型列名匹配的字段,并将其值插入输出中的对应列。(不对应任何输出列名的字段会被忽略。)在典型用法中,base 的值就是 NULL,这意味着凡是不匹配对象字段的输出列都会被填充为空值。但是,如果 base 不是 NULL,那么其中包含的值将用于那些不匹配的列。 | 现存 | |||
jsonb_populate_record_valid |
1 | jsonb_populate_record_valid ( base anyelement, from_json json ) → boolean |
— | |
| 用于测试 jsonb_populate_record 的函数。对于给定的输入 JSON 对象,如果 jsonb_populate_record 能够无错误地完成,即该输入有效,则返回 true;否则返回 false。 | 现存 | |||
jsonb_populate_recordset |
1 | jsonb_populate_recordset ( base anyelement, from_json jsonb ) → setof anyelement |
— | |
| 将由对象组成的顶级 JSON 数组展开为一组行,其复合类型与 base 参数相同。JSON 数组中的每个元素都按照上文对 json[b]_populate_record 的说明进行处理。 | 现存 | |||
jsonb_pretty |
1 | jsonb_pretty ( jsonb ) → text |
— | |
| 将给定的 JSON 值转换为经过美化并带有缩进的文本。 | 现存 | |||
jsonb_set |
1 | jsonb_set ( target jsonb, path text[], new_value jsonb [, create_if_missing boolean ] ) → jsonb |
— | |
| 返回 target,将 path 指定的项替换为 new_value,如果 create_if_missing 为真(此为默认值)并且 path 指定的项不存在,则添加 new_value。路径中的所有前面步骤都必须存在,否则将不加改变地返回 target。与面向路径的操作符一样,path 中的负整数从 JSON 数组末尾计数。如果最后一个路径步骤是超出范围的数组索引,并且 create_if_missing 为真,那么如果索引为负,新值将添加到数组的开头,如果索引为正,则添加到数组的结尾。 | 现存 | |||
jsonb_set_lax |
1 | jsonb_set_lax ( target jsonb, path text[], new_value jsonb [, create_if_missing boolean [, null_value_treatment text ]] ) → jsonb |
— | |
| 如果 new_value 不是 NULL,则行为与 jsonb_set 完全相同。否则,根据 null_value_treatment 的值进行处理,其值必须是'raise_exception'、'use_json_null'、'delete_key' 或'return_target' 之一。默认值为'use_json_null'。 | 现存 | |||
jsonb_strip_nulls |
1 | jsonb_strip_nulls ( target jsonb [,strip_in_arrays boolean ] ) → jsonb |
181 次 | |
| 递归地删除给定 JSON 值中所有值为 null 的对象字段。如果 strip_in_arrays 为 true(默认值为 false),那么数组中的 null 元素也会被删除;否则不会删除。裸露的 null 值永远不会被删除。 | 现存 | |||
jsonb_to_record |
1 | jsonb_to_record ( jsonb ) → record |
— | |
| 将顶级 JSON 对象展开为具有由 AS 子句定义的复合类型的行。(与所有返回 record 的函数一样,调用查询必须使用 AS 子句显式定义记录的结构。)输出记录由 JSON 对象的字段填充,与上面描述的 json[b]_populate_record 的方式相同。由于没有输入记录值,不匹配的列总是用空值填充。 | 现存 | |||
jsonb_to_recordset |
1 | jsonb_to_recordset ( jsonb ) → setof record |
— | |
| 将顶级 JSON 对象数组展开为一组由 AS 子句定义的复合类型的行。(与所有返回 record 的函数一样,调用查询必须使用 AS 子句显式定义记录的结构。)JSON 数组中的每个元素都按照上文对 json[b]_populate_record 的说明进行处理。 | 现存 | |||
jsonb_typeof |
1 | jsonb_typeof ( jsonb ) → text |
— | |
| 以文本字符串形式返回顶级 JSON 值的类型。可能的类型有 object、array、string、number、boolean 和 null。(null 的结果不应与 SQL NULL 混淆;参见示例。) | 现存 | |||
row_to_json |
1 | row_to_json ( record [, boolean ] ) → json |
9.42 次 | |
| 将 SQL 复合值转换为 JSON 对象。该行为与 to_json 相同,只是如果可选布尔参数为真,换行符将在顶级元素之间添加。 | 现存 | |||
to_json |
1 | to_json ( anyelement ) → json |
9.41 次 | |
| 将任何 SQL 值转换为 json 或 jsonb。数组和复合值递归地转换为数组和对象(多维数组在 JSON 中变成数组的数组)。否则,如果存在从 SQL 数据类型到 json 的类型转换,则类型转换函数将用于执行转换;[a] 否则,将生成一个标量 JSON 值。对于除数字、布尔值或空值之外的任何标量,将使用文本表示,并根据需要进行转义,使其成为有效的 JSON 字符串值。 | 现存 | |||
to_jsonb |
1 | to_jsonb ( anyelement ) → jsonb |
— | |
| 将任何 SQL 值转换为 json 或 jsonb。数组和复合值递归地转换为数组和对象(多维数组在 JSON 中变成数组的数组)。否则,如果存在从 SQL 数据类型到 json 的类型转换,则类型转换函数将用于执行转换;[a] 否则,将生成一个标量 JSON 值。对于除数字、布尔值或空值之外的任何标量,将使用文本表示,并根据需要进行转义,使其成为有效的 JSON 字符串值。 | 现存 | |||