我很难查询jsonb数据。我不习惯在postgres中处理jsonb类型。是否可以在jsonb字段上执行 WHERE IN ?
我有这样的数据
id | act | act_id | from_ids | object_ids | post_date
2 post 1 {"2":"1494308197"} {"items":["104564"]} 1494308197
我尝试执行以下操作,在from_ids列中找到id为关键字的任何ID。
SELECT an.* FROM activity_network an, jsonb_each(an.from_ids) d WHERE d.key->> in ('2');
但显然这不起作用。我试过各种形式。
我发现了一个类似的question,但它并不适用于我需要的东西,因为它获得了价值,我需要key
使用IN
。
不确定如何使用这些jsonb函数。
答案 0 :(得分:1)
比这简单得多:
SELECT an.*
FROM activity_network an
WHERE an.from_ids ?| ARRAY['2'];
以下索引可以加速这样的查询:
CREATE INDEX ON activity_network USING gin (from_ids);
答案 1 :(得分:0)
您可以使用rv = new RoundKnobButton(this, R.drawable.circle, R.drawable.circle1,
R.drawable.circle1, m_Inst.Scale(350), m_Inst.Scale(350));
功能。
jsonb_exists
the PG documentation中描述的SELECT an.* FROM activity_network an WHERE jsonb_exists(an.from_ids,'2');
运算符映射到该函数。如果您使用PHP,Java或C + libpq以外的任何其他内容,我建议您使用它,因为世界上的每个人都同意?
代表位置参数,但Postgres团队除外。