0

我的桌子

create table i (a json)

插入:

insert into i values ('[[1300,[{"id":5,"time":1451423706048,"zon":0,"name":"AMighty","loc":"ny"},[[3405,0,1000],[35,0,1000],[3401,0,10000],[2541,0,1000]]]]]' )

我希望提取 2541 之后的字段。在这种情况下,答案为 0

当查询我的 Json 时:

select json_array_elements(a) from I

它只返回一行。

4

1 回答 1

2

您需要遍历所有嵌套数组以获取必要的元素:

WITH i(a) AS ( VALUES
  ('[[1300,[{"id":5,"time":1451423706048,"zon":0,"name":"AMighty","loc":"ny"},[[3405,0,1000],[35,0,1000],[3401,0,10000],[2541,0,1000]]]]]'::JSON)
)
SELECT
  array_element->1->1->3 as array_you_look_for,
  array_element->1->1->3->1 as inner_array_element
FROM i,
  json_array_elements(a) as array_element;

输出:

 array_you_look_for | inner_array_element 
--------------------+---------------------
 [2541,0,1000]      | 0
(1 row)
于 2016-01-07T12:39:51.567 回答