SQL - 在json中查询哈希内的数组元素

时间:2018-01-19 10:30:41

标签: sql json postgresql

我有一个带有以下给定结构的jsonb列的表。

  

my_json:{“records”:[{“id”:1,“name”:“first”},{“id”:2,“name”:“second”},{“id”:3, “名称”: “第三”}]}

我需要的是选择记录键中的所有ID。而且我在这个json结构的任何地方都找不到任何帮助。

我已尝试过以下查询,但实际上无法达到我想要达到的目的。

"select my_json->>'records' from my_table where my_json->>'records' is not null AND my_json #> '{records}' != '[]'"

这实际上给出了完整的数组,但我需要的是所有'id'键的值。

请有人帮忙整理出来。

注意:我使用Postgres 9.5

1 个答案:

答案 0 :(得分:1)

您正在寻找json_array_elements

t=# with c(my_json) as (values (' {"records": [{"id":1, "name":"first"}, {"id":2, "name":"second"}, {"id":3, "name":"third"}]}'::json))
select json_array_elements(my_json->'records')->>'id' from c;
 ?column?
----------
 1
 2
 3
(3 rows)