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