Postgresql PostgresJSONB:检查数组中是否包含所有键*
声明我可以使用Postgresql PostgresJSONB:检查数组中是否包含所有键*,postgresql,jsonb,Postgresql,Jsonb,声明我可以使用?&检查JSONB对象的键是否包含数组中的所有元素。我是否需要检查JSONB对象中的所有键是否都包含在给定数组中 这样做一个查询 select my_jsonb_column from my_table where my_jsonb_column *contained_by* array['a', 'b', 'c']; 将产生如下结果,其中键是给定数组的子集 {'a': 1, 'b': 2} {'a': 1, 'b': 2, 'c': 3} 多亏@abelisto的建议,我想
?&
检查JSONB对象的键是否包含数组中的所有元素。我是否需要检查JSONB对象中的所有键是否都包含在给定数组中
这样做一个查询
select my_jsonb_column
from my_table
where my_jsonb_column *contained_by* array['a', 'b', 'c'];
将产生如下结果,其中键是给定数组的子集
{'a': 1, 'b': 2}
{'a': 1, 'b': 2, 'c': 3}
多亏@abelisto的建议,我想出了这个办法,而且似乎奏效了
select *
from my_table
where array(select jsonb_object_keys(my_json_column)) <@ array['a', 'b', 'c'];
选择*
从我的桌子上
where array(选择jsonb_object_keys(我的json_列))提示:array(选择jsonb_object_keys(我的jsonb_列))
谢谢您的回复!因此,我根据您的建议发布了一个解决方案,它是有效的,但我不明白为什么有必要在数组
函数中设置select
。显然,没有它它是不行的。如果你能给我指一些参考资料来解释,那就太好了。谢谢<代码>数组()
这里不是常规函数,而是。在我看来,子查询和结果不需要两种不同形式的构造函数。