0
CREATE OR REPLACE FUNCTION array_replace(INT[]) RETURNS float[] AS $$
DECLARE
arrFloats ALIAS FOR $1;
J int=0;
x int[]=ARRAY[2,4];
-- xx float[]=ARRAY[2.22,4.33];
b float=2.22;
c float=3.33;
retVal float[];
BEGIN
FOR I IN array_lower(arrFloats, 1)..array_upper(arrFloats, 1) LOOP
FOR K IN array_lower(x, 1)..array_upper(x, 1) LOOP
IF (arrFloats[I]= x[K])THEN
retVal[j] :=b;
j:=j+1;
retVal[j] :=c;
j:=j+1;
ELSE
retVal[j] := arrFloats[I];
j:=j+1;
END IF;
END LOOP;
END LOOP;
RETURN retVal;
END;
$$ LANGUAGE plpgsql STABLE RETURNS NULL ON NULL INPUT;
具体指标的值当我运行此查询替换的PostgreSQL 9.3
SELECT array_replace(array[1,20,2,5]);
它给我这个样子
"[0:8]={1,1,20,20,2.22,3.33,2,5,5}"
输出现在我不知道为什么要来此重复值。我的意思是马上嵌套循环...
我需要这样一个
"[0:8]={1,20,2.22,3.33,5}"
首先感谢您的回应。关键是我需要一个嵌套循环,因为对于每个所需的数组,让我们说数组[1,20,2,5]);我会给喜欢maching值让说数组[1,20]和替换将是这样[1.11,1,111,20.2,20.222] ..所以这里的替换将像数组[1.11,1,111,20.2,20.222,2 ,5]);你认为没有嵌套循环可能吗? – zahid
查看我的更新回答,输出 – Patrick
感谢帕特里克为您的答案...亚很好.... – zahid