从 jsonb 字段构建 jsonb 数组

Rag*_*nar 6 postgresql jsonb

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

UPDATE table1 t1 SET options = (SELECT jsonb_build_object('names', names) FROM table2 t2 WHERE t2.id= t1.id)
Run Code Online (Sandbox Code Playgroud)

其中names有类型 jsonb 数组。

SELECT jsonb_typeof(names) FROM table2array

现在我想提取namesjsonb 数组的值。但查询

SELECT jsonb_build_array(options->>'names') FROM table 
Run Code Online (Sandbox Code Playgroud)

给了我["[\"name1\", \"name2\"]"],而我期待着["name1", "name2"]

我怎样才能以正确的格式获得价值?

Dol*_*gan 4

->>运算符将返回字段的值(在您的例子中是一个 JSON 数组)作为正确转义的文本。您要寻找的是->操作员。

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