更新数组字符串到新的JSONB列的数组对象在PostgreSQL



我想将我的数据从一个数组填充到字符串,从一个列columns到另一个jsonbordered_columns

我在rails中做,我知道它可以工作,但我想用原始SQL

获得这种行为如何工作的例子:

columns: ["city", "leaseUsers"]
ordered_columns: [{key: "city",visible:true} , {key:"leaseUsers", visible:true}]

我知道我应该用jsonb_set更新,但我不确定我应该如何生成一个新的数组来更新新的列。

您可以打开数组,然后使用jsonb_agg()jsonb_build_object()将其聚合回来

update the_table
set ordered_columns = (select jsonb_agg(jsonb_build_object('key', item, 'visible', true))
from jsonb_array_elements(columns) as c(item));

最新更新