1차원 배열에 대해서만 적용되는 함수입니다.
이때, 두번째 인자의 자료형은 첫번째 인자인 배열의 자료형과
같아야합니다.
안그러면, 오류를 만드네요. 당연한 처리인듯.
사용예
mydb=> select * from arrtest;
a
-------------------------------------------------
{무궁화,꽃이,피었습니다,장미도,활짝,피었습니다}
(1건 있음)
mydb=> select array_delete(a, '피었습니다') from arrtest;
array_delete
---------------------------
{무궁화,꽃이,장미도,활짝}
(1건 있음)
소스는 다음과 같습니다. 8.0 이상에서의 구문입니다. 이하
버전에서는 함수 인자부분을 적당히 수정하셔서 사용하세요.
CREATE OR REPLACE FUNCTION array_delete(srcarr anyarray, element anyelement)
RETURNS anyarray AS
$BODY$
declare
retarr alias for $0;
maxcount int;
i int;
begin
if srcarr is null then
return null;
end if;
maxcount := array_upper(srcarr,1);
i := 1;
retarr := '{}';
while i <= maxcount loop
if srcarr[i] <> element then
retarr := array_append(retarr, srcarr[i]);
end if;
i := i + 1;
end loop;
return retarr;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
|