整数pgsql的输入语法无效

时间:2018-04-21 14:25:24

标签: sql json postgresql

我刚开始使用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 ...

1 个答案:

答案 0 :(得分:2)

运算符#>给出了一个json,而#>>给出了一个文本,你需要第二个:

select (poll_result::json #>> '{total_votes}')::integer + 1

select (poll_result::json ->> 'total_votes')::integer + 1

请参阅JSON Functions and Operators.