Postgres jsonb通过动态路径获得

时间:2016-09-07 10:16:02

标签: postgresql jsonb

是否可以在Postgres中执行类似的操作:

do $$
declare
  v_key text;
  v_json jsonb;
begin
  v_key := 'id';
  v_json := jsonb_build_object(
    'id', jsonb_build_object('nest_id',1)
  );
  raise notice '%', v_json #> '{'||v_key||'}'->>'nest_id';
end$$
  

错误:运算符不存在:jsonb#>文字
   没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。

1 个答案:

答案 0 :(得分:0)

the operator #>的右操作数类型是文本数组。使用array[...]表示法:

raise notice '%', v_json #> array[v_key]->>'nest_id';

或格式数组文字:

raise notice '%', v_json #> ('{'||v_key||'}')::text[]->>'nest_id';