我有一个json poll_result
{"total_votes":1,"yes":1,"no":0}
我有一个带键的变量
vote_to = _poll_response::json#>>'{vote}';
并返回"yes"
。
现在我想根据vote_to变量的值访问poll_result
json,所以我正在尝试
raise notice '%',poll_result::json#>>'{||vote_to||}';
但这是打印<NULL>
。即使我尝试过像
raise notice '%,%',poll_result,poll_result::json#>>'{''||vote_to||''}';
但结果相同<NULL>
。
请帮助!!!
答案 0 :(得分:1)
请参阅有关如何将变量与->>
和#>>
运算符一起使用的示例:
do $$
declare
pool_result json = '{"total_votes":1,"yes":1,"no":0}';
vote_to text = 'yes';
begin
raise notice 'yes: %', pool_result ->> vote_to;
-- or
raise notice 'yes: %', pool_result #>> array[vote_to];
end;
$$
NOTICE: yes: 1
NOTICE: yes: 1
如果变量的值是双引号,你应该修剪它们:
do $$
declare
pool_result json = '{"total_votes":1,"yes":1,"no":0}';
vote_to text = '"yes"';
begin
raise notice 'yes: %', pool_result ->> trim(vote_to, '"');
-- or
raise notice 'yes: %', pool_result #>> array[trim(vote_to, '"')];
end;
$$