postgres查询以更新json字段

时间:2019-03-08 23:31:44

标签: postgresql postgresql-9.1 postico

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

类似的事情应该起作用(假设您使用的是确实支持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。