从Postgres中的对象数组中选择一个具有特定字段所有值的数组

时间:2019-01-14 16:10:58

标签: sql postgresql

我有一列保存一个对象数组:

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

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

["dev", "designer"]

我认为可以使用JSON运算符和函数来执行此操作,但是在这里找不到合适的方法:https://www.postgresql.org/docs/10/functions-json.html。我在那些文档中忽略了什么吗?还有另一种方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:0)

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 demo

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