我有类型为 jsonb 的 options 列,格式为 {"names": ["name1", "name2"]} ,它是用创建的

UPDATE table1 t1 SET options = (SELECT jsonb_build_object('names', names) FROM table2 t2 WHERE t2.id= t1.id)

其中 names 的类型为 jsonb 数组。
SELECT jsonb_typeof(names) FROM table2array
现在我想将 names 的值提取为 jsonb 数组。但查询
SELECT jsonb_build_array(options->>'names') FROM table

给了我 ["[\"name1\", \"name2\"]"] ,而我期待 ["name1", "name2"]
我怎样才能以正确的格式获得值(value)?

最佳答案

->> 运算符将字段的值(在您的情况下,JSON 数组)作为正确转义的文本返回。您正在寻找的是 -> 运算符。

但是,请注意,使用 jsonb_build_array 将返回一个包含原始数组的数组,这可能也不是您想要的;只需使用 options->'names' 就可以满足您的需求。

关于postgresql - 从 jsonb 字段构建 jsonb 数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57857550/

10-13 00:03