我有类型为 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 table2
给 array
现在我想将
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/