CREATE OR REPLACE FUNCTION core.fx_count_letters(s character varying)
RETURNS character varying[] AS
$BODY$--
-- Функция считает согласные и гласные буквы
-- а также число переключений в виде кода 010101
--
DECLARE
s alias for $1;
i integer;
c character;
p character;
D character varying;
L integer;
R integer;
F integer;
CONST_L character varying;
CONST_R character varying;
BEGIN
CONST_L = 'ai';
CONST_R = 'bcd';
D = ''; p = substr(s,1,1);
L = 0; R = 0;
IF LENGTH(s)>0 THEN
FOR i in 1..LENGTH(s) LOOP
c = substr(s,i,1); F=0;
IF strpos(CONST_L,c)<>0 THEN
L = L+1; F=1;
END IF;
IF strpos(CONST_R,c)<>0 THEN
R = R+1; F=1;
END IF;
IF F=1 THEN
IF c<>p THEN
D=D || '1';
ELSE
D=D || '0';
END IF;
END IF;
p = c;
END LOOP;
END IF;
RETURN ARRAY[L::varchar,R::varchar,D];
END
--
--
--$BODY$
LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER
COST 100;
ALTER FUNCTION core.fx_count_letters(character varying) OWNER TO sk4_admin;
COMMENT ON FUNCTION core.fx_count_letters(character varying) IS 'Получение согласных и гласных букв в имени';
SQL Справочник v0.05 © 2007-2025 Igor Salnikov aka SunDoctor