Запрос postgres для обновления поля json

В базе данных PostgreSQL у меня есть таблица под названием hotel, в которой есть столбец hotel_info. В этом столбце hotel_info хранится объект json, как показано ниже

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

Мне нужен запрос на обновление, чтобы обновить значение поля 'first_name' в столбце 'hotel_info'. Пожалуйста, помогите мне построить запрос для этого.

Заранее спасибо!

1 ответ

Нечто подобное должно работать (при условии, что вы используете версию Postgres, которая действительно поддерживает операторы JSON). Обратите внимание, что функция 'set' здесь работает только на 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, и затем вы можете перейти к ОБНОВЛЕНИЮ, где это необходимо.

Другие вопросы по тегам