我在Postgres表中有一个jsonb列。它是一个简单的键值对字典。我想检查以下内容:
1.它是查询参数的子集
1.与查询参数有重叠
对于案例1,我可以很容易地实现这一点,它工作正常
SELECT '{"k1": "v1"}'::jsonb
<@ '{"k1": "v1", "k2":"v2"}'::jsonb; -- returns true
字符串
我没有得到一个简单的解决方案的情况2。我尝试了类似下面的东西,但它没有工作。
SELECT '{"k1": "v1", "k3":"v4"}'::jsonb
&& '{"k1": "v1", "k2":"v2"}'::jsonb; -- Syntax error.
型
我希望这会返回true,因为在某些键值对中存在重叠。
1条答案
按热度按时间nsc4cvqm1#
由于jsonb中不存在
&&
操作符,我建议您更改方法以使用jsonb_path_exists()
,并通过迭代查询参数来构建多个WHERE子句。例如:字符串