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
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() |