2016-09-07 6 views
1

を取得jsonb Postgresの中でこのような何かをすることが可能です:the operator #>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$$ 

ERROR: operator does not exist: jsonb #> text
No operator matches the given name and argument type(s). You might need to add explicit type casts.

+1

' '{' || || v_key '}' :: jsonb' –

答えて

0

右オペランドの型は、テキスト配列です。 array[...]表記を使用します。

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

またはフォーマット列リテラル:

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

はそんなにありがとう!できます! –

関連する問題