запрос postgres для обновления поля json - PullRequest
0 голосов
/ 09 марта 2019

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

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

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

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

1 Ответ

0 голосов
/ 09 марта 2019

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

...