count nulls or not nulls in one record/row

less than 1 minute read

背景

PGXN里的一个插件,用来计算一条记录或一条记录或一行(必须是同一类型)中空值或非空值的个数。

http://api.pgxn.org/src/count_nulls/count_nulls-0.9.2/doc/count_nulls.md

使用PLPGSQL函数就可以实现同样的功能。

postgres=# create or replace function f1(variadic arr anyarray) returns int as $$  
declare   
  i int := 0;   
  x int;  
begin   
  for x in 1..array_length(arr,1) loop   
    if (arr[x] is not null) then  
      i=i+1;   
    end if;   
  end loop;   
  return i;  
end;  
$$ language plpgsql strict;  
  
postgres=# select f1(1,2,3,'1'::int,null);  
 f1   
----  
  4  
(1 row)  
postgres=# select f1(1,2,3,'1'::int,null,null);  
 f1   
----  
  4  
(1 row)  

Flag Counter

digoal’s 大量PostgreSQL文章入口