Re: string = any()

From: Andy Colson <andy(at)squeakycode(dot)net>
To: David Johnston <polobo(at)yahoo(dot)com>
Cc: 'PostgreSQL' <pgsql-general(at)postgresql(dot)org>
Subject: Re: string = any()
Date: 2012-01-10 16:19:55
Message-ID: 4F0C652B.6040704@squeakycode.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> This still does not work, even in psql:
> select 'bob' = any( '{''joe'', ''bob'' }'::varchar[] )
>
> $$ ^ This works for me just fine....though I am not using psql; are
> you having quoting issues? What error do you get?
>

It runs, but it returns false. I get false at least. I'm assuming you
do to, otherwise something weird is going on.

> Its the same as if I try to prepare it in psql:
> clayia=# prepare x as select 'bob' = any($1::varchar[]); PREPARE
> Time: 1.884 ms
> clayia=# execute x( 'string_to_array(''joe,bob'', '','')' );
>
> $$ ^ Why do you have single-quotes surrounding "string_to_array";
> the EXECUTE now sees the entire literal 'string_to_array....' as a single
> scalar value and thus does not resolve the function call into an array.

Because it simulates how php is actually running the function. I
prepare the statement, and pass it a string.

execute x( 'string_to_array(''joe,bob'', '','')' );

That simulates pass a single string. It also results in the same
error's that php is getting... so I just assumed I was testing it correct.

Without the string works fine... but that's not how php works.
execute x( string_to_array('joe,bob', ',') );

You should have the same problem in java, if you:
q = databaseFactory.queryFactory.prepare("select 'bob' =
any($1::varchar[])");

:-) just kidding

Then when you execute it, you have to pass the argument as a string:
q.execute("{'joe','bob'}");

yeah, I'm thinking the execute param step is not running the param
through the entire parse/analyze/whatnot step, so I cannot use functions.

Eh, well, the input is from a website, so wanted to use prepared queries
as much as possible, but I'll just pg_escape all the strings and cat
them all into the sql statement itself.

Ok, nevermind, just got Tom's email. Double Quotes...

Thanks for the help,

-Andy

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message David Johnston 2012-01-10 16:28:39 Re: string = any()
Previous Message Andy Colson 2012-01-10 16:18:27 Re: string = any()