From: | "David Johnston" <polobo(at)yahoo(dot)com> |
---|---|
To: | "'Andy Colson'" <andy(at)squeakycode(dot)net>, "'PostgreSQL'" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: string = any() |
Date: | 2012-01-10 15:17:46 |
Message-ID: | 015101cccfab$0206f770$0614e650$@yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
-----Original Message-----
From: pgsql-general-owner(at)postgresql(dot)org
[mailto:pgsql-general-owner(at)postgresql(dot)org] On Behalf Of Andy Colson
Sent: Tuesday, January 10, 2012 10:04 AM
To: PostgreSQL
Subject: [GENERAL] string = any()
Hi all.
I am writing PHP where it prepares a statement like:
$sql = 'select * from aTable where id = any($1)';
then in php I create a string:
$args = "{1,2,3}";
And run it:
$q = pg_query_params($db, $sql, $args);
This is not actual code, just a sample. And it works great for integers. I
cannot get it to work with strings.
Just running this in psql does not work either:
select 'bob' = any( '{''joe'', ''bob'' }' )
But this does:
select 'bob' = any( array['joe', 'bob'] )
But I can't seem to prepare and execute:
$sql = "select 'bob' = any( $1 )";
$args = "array['joe', 'bob']";
$q = pg_query_params($db, $sql, $args);
Running on 9.0.4 on Slackware 64.
Any hits would be appreciated.
-Andy
------------------------------------------------------------------------
Explicit casting is required otherwise the system simply treats you input as
a simple scalar varchar.
" SELECT 'bob' = ANY( $1::varchar[] ) ... "
You can also pass in a delimited string and perform a "split_to_array($1,
',')" - didn't check exact syntax but you get the idea
David J.
From | Date | Subject | |
---|---|---|---|
Next Message | Andy Colson | 2012-01-10 15:32:48 | Re: string = any() |
Previous Message | Andy Colson | 2012-01-10 15:17:40 | Re: string = any() |