首页 > 解决方案 > postgres 查询更新 json 字段

问题描述

在 PostgreSQL 数据库中,我有一个名为 hotel 的表,其中有一个名为 hotel_info 的列。这个 hotel_info 列存储 json 对象,如下所示

{
"hotel":{
    "room_details":{
        "customer_detail":{
            "first_name" : "aaa"
        }
    }
}}

我需要一个更新查询来更新“hotel_info”列中“first_name”字段的值。请帮我为此建立查询。

提前致谢!

标签: postgresqlpostgresql-9.1postico

解决方案


像这样的东西应该可以工作(假设您使用的是确实支持 JSON 运算符的 Postgres 版本)。请注意,此处的“设置”功能仅适用于 JSONB,因此您可能需要在之前/之后转换列:

SELECT JSONB_SET(
    hotel_info #> '{hotel, room_details, customer_detail}'
    , '{first_name}'
    , '"bbb"'
    , create_missing FALSE) AS hotel_info_modified
FROM table

在这里,为了示例,我将名称更改为“bbb”。通过 SELECT 检查这确实是预期的行为,然后您可以在需要时更改为 UPDATE。


推荐阅读