如何在 PostgreSQL 中正确地合并两个 JSON 对象?
时间: 2024-11-04 10:15:14 浏览: 32
postgres-json:在 PostgreSQL 中存储和查询 JSON 文档
在 PostgreSQL 中,如果你需要正确合并两个 JSON 对象,可以使用 `jsonb_set` 或者 `jsonb_merge` 函数,取决于你需要保持原始对象的完整还是覆盖重复的键。这里分别举例说明:
1. **完全覆盖(替换键值对)**:如果希望第二个对象替代第一个对象的所有键值对,可以使用 `jsonb_merge` 函数:
```sql
SELECT jsonb_merge(jsonb '{"a": 1, "b": 2}', '{"a": 3, "c": 4}');
```
结果:`{"a": 3, "b": 2, "c": 4}`
2. **保持键值对并添加新键**:如果你想要保留第一个对象的键,如果有冲突则只更新对应的值,可以使用 `jsonb_set` 函数结合 `->>` 操作符来获取原始值,然后组合到新的对象里:
```sql
SELECT jsonb_set(
jsonb '{"a": 1, "b": 2}',
ARRAY['a', 'c'],
jsonb_build_array(3, jsonb_get(jsonb '{"a": 3, "c": 4}', 'c'))
);
```
结果:`{"a": 3, "b": 2, "c": 4}`
在实际操作中,记得检查输入的数据类型,确保它们都是 `jsonb` 类型。
阅读全文