我在psql上有一个表,其中一列叫做offer,类型是json
,而不是text。里面的jsons有一个属性作为数组。但是,当我使用->>
运算符将该属性提取到列中时,我收到的是文本数据类型,而不是数组类型。我想收到一个数组
该JSON列的每一行都具有以下结构
{"possible_amounts": [3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000],
"possible_weeks": [4],
"salary_multiplier": null,
"is_scored": false}
然而,如果我运行这个查询SELECT offer ->> 'possible_amounts' as extracted_amounts FROM table_name
,结果extracted_amounts
列是文本数据类型,我不能对它应用数组函数。
另一种选择。我看到还有#>
和#>>
操作符从documentation的json中的数组属性中提取特定的索引,它确实可以工作SELECT offer#> '{possible_amounts,0}' as extracted_amounts FROM table_name
然而,这只适用于提取一个值(在我的例子中的第一个),我想把整个数组提取到数组类型的列中。这可能吗?
1条答案
按热度按时间yeotifhr1#
使用
->
运算符获取JSON格式的值,在本例中为数组。->>
运算符将其作为文本返回。示例
选择整个数组:
选择第三个数组元素:
手动输入:https://www.postgresql.org/docs/current/functions-json.html#FUNCTIONS-JSON-OP-TABLE