Postgres在列中递增空值

时间:2018-03-23 06:54:45

标签: sql postgresql null postgresql-9.3

在Postgres 9.3中,当表中的字段具有空值时,以下表达式不起作用:

update table_statatistic set members = members + 1 WHERE user_id = $1; 

但是,当该字段具有整数值时,此查询会将其递增1而不会出现问题。

问题是:

  1. 为什么会这样。
  2. 如何修复它。

2 个答案:

答案 0 :(得分:6)

您需要使用coalesce来检查空值

update table_statatistic set members = coalesce(members, 0) + 1 WHERE user_id = $1

答案 1 :(得分:2)

使用COALESCE()代替: COALESCE函数返回其非空的第一个参数。仅当所有参数都为null时才返回Null。当检索数据用于显示时,它通常用于替换默认值为空值

UPDATE table_statatistic SET members = COALESCE(members,0) + 1 WHERE user_id = $1;