如何在json中为缺少的属性构建postgres json查询?

时间:2017-10-30 08:01:30

标签: sql json postgresql

我有一张表A,其中b列为jsonb

        b
------------------
 {"c": 1}
 {"c": 1, "d": 2}

如何为缺少d的行构建查询?

SELECT * FROM A WHERE b@>'{"c":1}';

时返回所有行
SELECT * FROM A WHERE b@>'{"c":1,"d":null}';

返回none(由于d在第一行中不为空);

1 个答案:

答案 0 :(得分:2)

您可以使用? operator来测试是否存在密钥。要找到不存在密钥的那些,可以否定表达式:

select *
from a 
where not b ? 'd';