PostgreSQL - 如何更改JSONB数据类型?

3

我有一个包含名为“details”的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个回答

3
您可以使用函数 to_jsonb() 将值转换为 JSON 数字:
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))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接