Эти функции нужны каждому PostgreSQL

Несколько полезных функций: if, first, last.

if(<условие выполняется?>, <да>, [<нет>])

Компактная альтернатива конструкции CASE. Последний аргумент необязательный, если нужно вернуть NULL в случае невыполнения условия.

CREATE OR REPLACE FUNCTION public.if(boolean, anycompatible, anycompatible DEFAULT NULL::unknown) RETURNS anycompatible LANGUAGE sql IMMUTABLE PARALLEL SAFE AS $function$ SELECT CASE WHEN $1 THEN $2 ELSE $3 END $function$;

first(<значение>)

Агрегатная функция возвращает первое значение отличное от NULL. Работает с оконными функциями и типом BOOLEAN.

CREATE OR REPLACE FUNCTION public.first_agg(anyelement, anyelement) RETURNS anyelement LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT AS $function$ SELECT $1 $function$; CREATE OR REPLACE AGGREGATE public.first(pg_catalog.anyelement) ( SFUNC = first_agg, STYPE = anyelement );

last(<значение>)

Агрегатная функция возвращает последнее значение отличное от NULL. Работает с оконными функциями и типом BOOLEAN.

CREATE OR REPLACE FUNCTION public.last_agg(anyelement, anyelement) RETURNS anyelement LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT AS $function$ SELECT $2 $function$; CREATE OR REPLACE AGGREGATE public.last(pg_catalog.anyelement) ( SFUNC = last_agg, STYPE = anyelement );
Начать дискуссию