[pgsql-jp: 30439] Re: PL/pgSQL内でのLIKE 節の使用法

Jun Kitamura kitamura @ zoozee.jp
2003年 7月 12日 (土) 17:25:15 JST


北村です。

> PL/pgSQL内でのLIKE節の使用法について質問させて下さい。
(略)
> 変数strを使って同じ意味をもたせたいと思っています。

> *********************************************************
> DROP TABLE testrel;
> CREATE TABLE testrel (string TEXT);
> INSERT INTO testrel VALUES ('testdayo');
> CREATE OR REPLACE FUNCTION testlike() RETURNS TEXT AS '
>   DECLARE
>     str TEXT;
>     result TEXT;
>   BEGIN
>     str := ''test'';
>     result := ''initialize'';
> 
>     SELECT string 
>     FROM testrel 
>     INTO result
>     WHERE string LIKE ''%test%'';  -- <- Here!
>     RETURN result;
>   END;
> ' LANGUAGE 'plpgsql';
> *********************************************************

WHERE string LIKE ''%'' || str || ''%'';  -- <- Here!

としてやればOKです。
str は変数です。引数の ALIAS にするおつもりだと思いますが、
ちゃんと動きます。

CREATE OR REPLACE FUNCTION testlike(text) RETURNS TEXT AS '
  DECLARE
    str ALIAS FOR $1;
    result TEXT;
  BEGIN
    result := ''initialize'';
    SELECT string 
    FROM testrel 
    INTO result
    WHERE string LIKE ''%'' || str || ''%'';  -- <- Here!
    RETURN result;
  END;
' LANGUAGE 'plpgsql';

結果
test=# select testlike('dayo');
 testlike
----------
 testdayo
(1 row)


でわ。





pgsql-jp メーリングリストの案内