如何在PostgreSQL 9.3中查询JSON数组?

时间:2014-07-14 09:17:33

标签: json postgresql

我创建了一个名为' delivery'其中一个字段是JSON数组。

CREATE TABLE delivery
(
  id text NOT NULL,
  date timestamp with time zone NOT NULL,
  items json NOT NULL,
  CONSTRAINT delivery_pkey PRIMARY KEY (id)
)

以下是示例数据:

"1", "2012-01-08 20:54:38.541989+00", "[ {"id":1, "qty": 10 }, {"id":2, "qty": 300}]"
"2", "2012-01-08 22:44:10.016285+00", "[ {"id":1, "qty": 200}]"

如何获取' id'在'项内'字段等于1?

2 个答案:

答案 0 :(得分:1)

您可以使用子查询和json函数执行此操作:

SELECT * FROM delivery
WHERE '1' in (
   select a->>'id' from json_array_elements(items) a
)

这是要使用的SQL fiddle

答案 1 :(得分:-1)

试试这个:

SELECT * FROM delivery WHERE items->>'id' = 1