Postgresql - 如何更改 JSONB 数据类型?
Postgresql - How to change JSONB data type?
我有一个 table,其中包含 jsonb 列 "details",数据类型错误如下:
select id,details from products;
id | details
---+-----------------------------------------
1 | {"price": "310", "supplier": "VendorA"}
2 | {"price": "250", "supplier": "VendorB"}
这里我想把"price"的数据类型改成整型,目前是以字符串形式存储的。想要的结果如下:
id | details
---+-----------------------------------------
1 | {"price": 310, "supplier": "VendorA"}
2 | {"price": 250, "supplier": "VendorB"}
如果你能指导我如何实现它,我将不胜感激?
您可以使用函数 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))
我有一个 table,其中包含 jsonb 列 "details",数据类型错误如下:
select id,details from products;
id | details
---+-----------------------------------------
1 | {"price": "310", "supplier": "VendorA"}
2 | {"price": "250", "supplier": "VendorB"}
这里我想把"price"的数据类型改成整型,目前是以字符串形式存储的。想要的结果如下:
id | details
---+-----------------------------------------
1 | {"price": 310, "supplier": "VendorA"}
2 | {"price": 250, "supplier": "VendorB"}
如果你能指导我如何实现它,我将不胜感激?
您可以使用函数 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))