Hello
in this case you must not use quoting
postgres=# create or replace function anytest(val text) returns boolean as $$
begin
perform 1 where val in ('hello', 'world', 'test');
if not found then
return false;
else
return true;
end if;
end;
$$ language plpgsql;
CREATE FUNCTION
Time: 3,342 ms
postgres=# select anytest('hello');
anytest
---------
t
(1 row)
Time: 42,034 ms
postgres=# select anytest('helloa');
anytest
---------
f
(1 row)
Time: 0,468 ms
postgres=#
you have to use quoting only together dynamic sql, etc EXECUTE statement
regards
Pavel Stehule
2008/7/15 Yi Zhao <yi.zhao@alibaba-inc.com>:
> I want to check a variable is in a aggregattion or not, so I create a
> function as below:
>
> create or replace function anytest(val text) returns boolean as $$
> begin
> perform 1 where quote_literal(val) in ('hello', 'world', 'test');
> if not found then
> return false;
> else
> return true;
> end if;
> end;
> $$ language plpgsql;
>
> but when I used, I got the result below, why?
>
> test=# select anytest('world111');
> anytest
> ---------
> f
> (1 row)
>
> test=# select anytest('world');
> anytest
> ---------
> f
> (1 row)
>
>
> any help is appreciated.
>
> regards,
> Zy
>
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>