PostgreSQL 提供了许多用于处理 JSON 数据的函数和操作符,这些函数和操作符可用于解析、查询和操作 JSON 文档。以下是一些常用的 PostgreSQL JSON 函数和操作符:

JSON 构造函数:

1. json:
   - 描述:将文本表示的 JSON 转换为 jsonb 类型。
   - 示例:
     SELECT json('{"name": "John", "age": 30}');

JSON 查询函数:

1. -> 和 ->>:
   - 描述:用于从 JSON 对象中提取字段,-> 返回 JSON 对象,->> 返回文本。
   - 示例:
     SELECT json_column->'name' AS name, json_column->>'age' AS age FROM table_name;

2. #> 和 #>>:
   - 描述:用于从嵌套的 JSON 对象中提取字段,#> 返回 JSON 对象,#>> 返回文本。
   - 示例:
     SELECT json_column #> '{person, address, city}' AS city,
            json_column #>> '{person, phone, 0}' AS first_phone
     FROM table_name;

JSON 操作函数:

1. jsonb_agg:
   - 描述:将行集合聚合为一个 JSON 数组。
   - 示例:
     SELECT jsonb_agg(jsonb_build_object('name', name, 'age', age)) FROM table_name;

2. jsonb_set:
   - 描述:设置 JSON 对象中的特定路径的值。
   - 示例:
     UPDATE table_name
     SET json_column = jsonb_set(json_column, '{person, address, city}', '"New York"')
     WHERE condition;

JSON 索引操作符:

1. @> 和 <@:
   - 描述:用于判断 JSON 对象是否包含另一个 JSON 对象,或者是否被另一个 JSON 对象包含。
   - 示例:
     SELECT '{"name": "John", "age": 30}'::jsonb @> '{"age": 30}'::jsonb;

2. ? 和 ?| 和 ?&:
   - 描述:用于检查 JSON 对象中是否存在指定的键,? 检查单个键,?| 检查多个键中的任意一个,?& 检查多个键全部存在。
   - 示例:
     SELECT '{"name": "John", "age": 30}'::jsonb ? 'name';

这些函数和操作符可以帮助你在 PostgreSQL 中有效地处理 JSON 数据,包括从 JSON 文档中提取信息、构建 JSON 文档以及进行 JSON 类型的转换等。请注意,PostgreSQL 也提供了 json 类型,但 jsonb 类型更为推荐,因为它更有效率且支持更多的查询和操作。


转载请注明出处:http://www.zyzy.cn/article/detail/8186/PostgreSQL