Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 为什么PL/pgSQL中的每一个都会出现错误_Postgresql_Foreach_Plpgsql - Fatal编程技术网

Postgresql 为什么PL/pgSQL中的每一个都会出现错误

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

我有一个在一些文本字符串中应用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;  
    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
是一个保留关键字。您需要找到一个不同的变量名。用于检查的tanks
union
是一个保留关键字。您需要找到一个不同的变量名.tanks进行检查