我希望使用psql查询来查找jsonb值中是否存在特定路径。
例如,对于此路径:{"333":"opc":["1333"]}
此值应返回true:
'{"333":{"opc":[{"1333":"3787"}]}}'但是这些值应该返回false:
'{"333":{"opc":[{"104":"3787"}]}}''{"54":{"opc":[{"1333":"3787"},{"1334":"37"}]}}''{"333":{"opc":[]}}'我尝试了一些使用@>运算符的变体,但是无法得到正确的语法。
例:
select
'{"333":{"opc":[{"1333":"3787"},{"1334":"37"}]}}'::jsonb @>
'{"333":{"opc":[{"1333"}]}}'::jsonb这给我一个无效的语法错误。
发布于 2016-05-10 19:54:37
怎么样
select
case when
(select e->'1333' from json_array_elements(data->'333'->'opc') e) is not null
then true
else false
end as status
from t
;?http://sqlfiddle.com/#!15/2c794/17
https://stackoverflow.com/questions/37144405
复制相似问题