是否可以在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#>文字
没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。
答案 0 :(得分:0)
the operator #>
的右操作数类型是文本数组。使用array[...]
表示法:
raise notice '%', v_json #> array[v_key]->>'nest_id';
或格式数组文字:
raise notice '%', v_json #> ('{'||v_key||'}')::text[]->>'nest_id';