我刚开始使用postgresql。我在表中有一个json对象。在json对象中有一个数值,我想在其中添加一个数字并将其分配给其他整数。这就是我在做的事情
declare
total_votes integer;
....
select result into poll_result from polls where id = 1;
total_votes = (select poll_result::json#>'{total_votes}'::integer + 1);
但这显示
ERROR: invalid input syntax for integer: "{total_votes}"
LINE 1: SELECT (select poll_result::json#>'{total_votes}'::integer +...
poll_result有像
这样的数据{
"yes": 1,
"no": 0,
"total_votes": 1
}
当我尝试使用
打印total_votes时RAISE NOTICE '%',poll_result::json#>'{total_votes};
打印1。
甚至我都试过total_votes = (select (poll_result::json#>'{total_votes}')::integer + 1);
但错误
ERROR: cannot cast type json to integer
LINE 1: ...ELECT (select (poll_result::json#>'{total_votes}')::integer ...
答案 0 :(得分:2)
运算符#>
给出了一个json,而#>>
给出了一个文本,你需要第二个:
select (poll_result::json #>> '{total_votes}')::integer + 1
或
select (poll_result::json ->> 'total_votes')::integer + 1