postgres发现json路径是否存在

时间:2016-05-10 16:42:40

标签: json postgresql path psql jsonb

我想使用psql查询查找jsonb值中是否存在特定路径。

例如,对于此路径:{“333”:“opc”:[“1333”]}

此值应返回true: '{ “333”:{ “OPC”:[{ “1333”: “3787”}]}}'

但是这些值应该返回false:

  • '{ “333”:{ “OPC”:[{ “104”: “3787”}]}}'
  • '{ “54”:{ “OPC”:[{ “1333”: “3787”},{ “1334”: “37”}]}}'
  • '{ “333”:{ “OPC”:[]}}'

我尝试使用@>进行了一些变化。运算符,但无法获得正确的语法。

ex:选择 '{“333”:{“opc”:[{“1333”:“3787”},{“1334”:“37”}}}}':: jsonb @>
'{ “333”:{ “OPC”:[{ “1333”}]}}' :: jsonb

这给了我一个无效的语法错误

1 个答案:

答案 0 :(得分:0)

怎么样

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