PostgreSQL - установить свойство JSONB из значения столбца - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть числовой c столбец total_price, и я хочу переместить его в свойство jsonb с именем price_detail. Например, если значение total_price равно 1000, ожидаемое значение price_detail равно {"totalPrice": 1000}

Я пытался использовать jsonb_set, но в результате получается пустой объект {}

UPDATE public.orders SET price_detail =
       jsonb_set('{}'
               , '{}'
               , jsonb_build_object('totalPrice', total_price::numeric)) 

Если я задаю путь,

UPDATE public.orders SET price_detail =
       jsonb_set('{}'
               , '{totalPrice}'
               , jsonb_build_object('totalPrice', total_price::numeric)) 

Результат {"totalPrice":{"totalPrice":1000}}, что является неожиданным

Как правильно установить свойство totalPrice?

1 Ответ

1 голос
/ 05 апреля 2020

Вам не нужно JSONB_SET, просто используйте JSONB_BUILD_OBJECT:

UPDATE orders 
SET price_detail = JSONB_BUILD_OBJECT('totalPrice', total_price::numeric)

Демонстрация на dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...