2016-11-24 6 views
0

整数が整数の配列に存在するかどうかを知る必要があります。ここでPL/pgSQLで単純な配列検索を行う方法

は、私が持っているものです。

CREATE OR REPLACE FUNCTION mytest1() RETURNS integer 
    LANGUAGE plpgsql 
AS $fun$ 
DECLARE 
    testid    INTEGER := 22; 
    testary    INTEGER [] := '{1,2,3}'; 
BEGIN 
    PERFORM testid = ANY (testary); 
    IF FOUND THEN 
     RAISE NOTICE '@@@@@@@@@@@@@@@ found:'; 
    END IF; 
    RETURN 1; 
END; 
$fun$ 

それは常にtrueを返します。これは私が助けを求めて恥ずかしいと感じるほど簡単なはずです。私は間違って何をしていますか?

答えて

2

これは、あなたが問題を解決する方法である。

CREATE OR REPLACE FUNCTION mytest1() RETURNS integer 
    LANGUAGE plpgsql 
AS $fun$ 
DECLARE 
    testid    INTEGER := 1; 
    testary    INTEGER [] := '{1,2,3}'; 
BEGIN 
    IF testid = ANY (testary::INTEGER[]) THEN 
     RETURN 1; 
    END IF; 
    RETURN 0; 
END; 
$fun$; 


SELECT mytest1(); 
+0

これはとても単純ですが、私はそれを理解していないと恥ずかしいです。ありがとう! –

0

はまだ、単純なことができます:

CREATE OR REPLACE FUNCTION mytest1() 
    RETURNS boolean AS 
$func$ 
DECLARE 
    testid int := 1; 
    testary int[] := '{1,2,3}'; 
BEGIN 
    RETURN (testid = ANY(testary)); 
END 
$func$ LANGUAGE plpgsql IMMUTABLE; 

式を直接返すことができboolean値を返します。