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