Postgresql 为什么PL/pgSQL中的每一个都会出现错误
我有一个在一些文本字符串中应用jaccard索引的函数Postgresql 为什么PL/pgSQL中的每一个都会出现错误,postgresql,foreach,plpgsql,Postgresql,Foreach,Plpgsql,我有一个在一些文本字符串中应用jaccard索引的函数 CREATE OR REPLACE FUNCTION jaccard(INPUT text, INPUT2 text) RETURNS real LANGUAGE plpgsql AS $$ DECLARE trigrama1 text[]; trigrama2 text[]; union text[]; interception text[]; palabra1 text; pala
CREATE OR REPLACE FUNCTION jaccard(INPUT text, INPUT2 text) RETURNS real
LANGUAGE plpgsql
AS $$
DECLARE
trigrama1 text[];
trigrama2 text[];
union text[];
interception text[];
palabra1 text;
palabra2 text;
coincidencias int=0;
inicio int=1;
fin int=3;
longitud int;
longitud2 int;
resultado real;
item text;
item2 text;
BEGIN
palabra1=replace(INPUT,' ','');
palabra2=replace(INPUT2,' ','');
palabra1=regexp_replace(palabra1, '[^a-zA-Z]', '', 'g');
palabra2=regexp_replace(palabra2, '[^a-zA-Z]', '', 'g');
longitud=char_length(palabra1);
WHILE fin <= longitud LOOP
trigrama1=array_append(trigrama1,substr(palabra1, inicio,3));
fin=fin+1;
inicio=inicio+1;
END LOOP;
inicio=1;
fin=3;
longitud=char_length(palabra2);
WHILE fin <= longitud LOOP
trigrama2=array_append(trigrama2,substr(palabra2, inicio,3));
fin=fin+1;
inicio=inicio+1;
END LOOP;
union=array_cat(ARRAY[]::text[],trigrama1);
FOREACH item IN ARRAY trigrama2 LOOP
coincidencias=0;
FOREACH item2 IN ARRAY union LOOP --line error
IF item=item2 THEN
coincidencias = coincidencias +1;
END IF;
END LOOP;
IF coincidencias =0 THEN
union=array_append(union,item);
END IF;
END LOOP;
FOREACH item IN ARRAY trigrama2 LOOP
coincidendencias=0;
FOREACH item2 IN ARRAY trigrama1 LOOP
IF item=item2 THEN
coincidencias = coincidencias +1;
END IF;
END LOOP;
IF coincidencias >0 THEN
interception=array_append(interception,item);
END IF;
END LOOP;
longitud=array_length(union,1);
longitud2=array_length(interception,1);
resultado=longitud/longitud1;
RETURN resultado;
END;
$$;
union
是一个保留关键字。您需要找到一个不同的变量名。用于检查的tanksunion
是一个保留关键字。您需要找到一个不同的变量名.tanks进行检查