count nulls or not nulls in one record/row
背景
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)