首页 > 解决方案 > 从 Postgres 中的对象数组中选择一个包含特定字段的所有值的数组

问题描述

我有一个包含对象数组的列:

[{"name": "Sue", "job": "dev"}, {"name": "Bob", "job": "designer"}]

我想选择该列,但我只对“工作”字段的值感兴趣,所以我想要一个这样的数组:

["dev", "designer"]

我想有一种方法可以使用 JSON 运算符和函数来做到这一点,但我在这里找不到任何合适的东西:https ://www.postgresql.org/docs/10/functions-json.html 。我是否忽略了这些文档中的某些内容?还有另一种方法可以做到这一点吗?

标签: sqlpostgresql

解决方案


json_to_recordset 和 array_agg 应该可以解决您的问题:

select array_agg(job) 
  from myTable
  cross join lateral 
  json_to_recordset(myTable.myJsonColumn) as t(name text, job text);

这是一个SQLFiddle 演示

注意:感谢 Tony 对数组的提醒。我错过了。


推荐阅读