在POSTGRESQL 9.6中查询jsonb数组

时间:2017-10-30 14:51:43

标签: json postgresql

这是我的json:

[{"state":"terminated"}]

如何查询此数组以获取where子句中的状态?

我想查询我的表并获取包含状态等于“已终止”的colunm的每一行

我的表:

id     |   info
 1     |  [{"state":"terminated"}]

我尝试了什么:

select * from "myTable"
where info->>'state' = 'terminated' 

但它不会返回任何行。

我在表中检查过我有一行状态=“已终止”

编辑:

“info”列可以包含比现在更多的对象。

示例:

 [{"state":"terminated"},{"anotherKey","anotherValue"}]

由于

1 个答案:

答案 0 :(得分:1)

首先创建索引

CREATE INDEX docs_data_idx ON myTable USING GIN (info jsonb_path_ops);

然后

select * from myTable WHERE  info @> '[ { "state":"terminated"} ]';