Re: string = any()

Поиск
Список
Период
Сортировка
От Andy Colson
Тема Re: string = any()
Дата
Msg-id 4F0C5A20.5030200@squeakycode.net
обсуждение исходный текст
Ответ на Re: string = any()  ("David Johnston" <polobo@yahoo.com>)
Ответы Re: string = any()  ("David Johnston" <polobo@yahoo.com>)
Re: string = any()  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
On 1/10/2012 9:17 AM, David Johnston wrote:
> -----Original Message-----
> From: pgsql-general-owner@postgresql.org
> [mailto:pgsql-general-owner@postgresql.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.
>
>
>
>
>

Well, so close.

This still does not work, even in psql:
select 'bob' = any( '{''joe'', ''bob'' }'::varchar[] )

I cannot get a prepared version, or a php version to work either.


But this works in psql!
select 'bob' = any( string_to_array('joe,bob', ',') )

But not in php :-(

I still get errors:
Query failed: ERROR: array value must start with "{" or dimension
information

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'', '','')' );
ERROR:  array value must start with "{" or dimension information
LINE 1: execute x( 'string_to_array(''joe,bob'', '','')' );



-Andy



В списке pgsql-general по дате отправления:

Предыдущее
От: "David Johnston"
Дата:
Сообщение: Re: string = any()
Следующее
От: "David Johnston"
Дата:
Сообщение: Re: How do you change the size of the WAL files?