PSQL json列未将数组解释为数组

yzuktlbb  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(101)

我在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

然而,这只适用于提取一个值(在我的例子中的第一个),我想把整个数组提取到数组类型的列中。这可能吗?

yeotifhr

yeotifhr1#

使用->运算符获取JSON格式的值,在本例中为数组。->>运算符将其作为文本返回。

SELECT offer -> 'possible_amounts' as extracted_amounts FROM table_name;

示例

选择整个数组:

SELECT ('{
  "numbers": [1, 2, 3, 4, 5]  
}'::json -> 'numbers') AS numbers_array;

选择第三个数组元素:

SELECT (
  '{
    "numbers": [1, 2, 3, 4, 5]  
  }'::json -> 'numbers' -> 3
) AS third_element;

手动输入:https://www.postgresql.org/docs/current/functions-json.html#FUNCTIONS-JSON-OP-TABLE

相关问题