查询JSON PostgreSQL
问题描述:
CREATE TABLE tableTestJSON (
id serial primary key,
data jsonb
);
INSERT INTO tableTestJSON (data) VALUES
('{}'),
('{"a": 1}'),
('{"a": 2, "b": ["c", "d"]}'),
('{"a": 1, "b": {"c": "d", "e": true}}'),
('{"b": 2}');
我可以选择值。这没有问题。查询JSON PostgreSQL
SELECT * FROM tableTestJSON;
我可以测试两个JSON对象是否与此查询相同。
SELECT * FROM tableTestJSON WHERE data = '{"a":1}';
此查询的输出是:
ID |数据 ---- + ------ 1 | {“一”:1} (1行)
但我有一个问题: 可以说我有一栏:
{a: 30}
{a: 40}
{a: 50}
在这种情况下,我怎么能查询所有包含的元素a = 30或a = 40。我无法找到'or'的任何解决方案,例如
select * from table where a in (10,20); // ??
或 我该如何查询这种情况?
答
提取使用the operator ->> JSON对象的值:
select *
from tabletestjson
where (data->>'a')::int in (1, 2)
id | data
----+--------------------------------------
2 | {"a": 1}
3 | {"a": 2, "b": ["c", "d"]}
4 | {"a": 1, "b": {"c": "d", "e": true}}
(3 rows)
另外我测试另一asnwer这样。 Like this query:SELECT * FROM tableTestJSON WHERE data#>'{a}'IN('10','20'); 谢谢。 – aemre