Postgresql - Как изменить тип данных JSONB? - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть таблица, которая включает столбец jsonb «детали» с неправильным типом данных, как показано ниже:

select id,details from products;

id |              details                
---+-----------------------------------------
 1 | {"price": "310", "supplier": "VendorA"}
 2 | {"price": "250", "supplier": "VendorB"}

Здесь я хотел бы изменить тип данных «цена» на целое число, которое в настоящее время хранится в виде строки,Желаемый результат выглядит следующим образом:

id |              details             
---+-----------------------------------------
 1 | {"price": 310, "supplier": "VendorA"}
 2 | {"price": 250, "supplier": "VendorB"}

Буду признателен, если вы мне поможете, как этого добиться?

1 Ответ

0 голосов
/ 15 декабря 2018

Вы можете преобразовать значение в число json, используя функцию to_jsonb():

select id, jsonb_set(details, '{price}', to_jsonb((details->>'price')::int))
from products

 id |               jsonb_set               
----+---------------------------------------
  1 | {"price": 310, "supplier": "VendorA"}
  2 | {"price": 250, "supplier": "VendorB"}
(2 rows)

Оператор обновления может выглядеть следующим образом:

update products
set details = jsonb_set(details, '{price}', to_jsonb((details->>'price')::int))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...