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@xxxxxxxxxxxxxxx>: > 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@xxxxxxxxxxxxxx) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-general >