Thanks for the explanation. I think I at least understand what it's doing now. I'm either surprised or confused though, as I was under the impression that you could substitute a subquery for a value pretty much anywhere, but I guess that's not the case?
Cheers, Ken
On Mon, Sep 16, 2013 at 6:16 PM, David Johnston <polobo@yahoo.com> wrote:
Ken Tanzer wrote
> ets_reach=> SELECT 'found' WHERE 'test' = ANY( (SELECT > ARRAY['test','pass','fail']) ); > > ERROR: array value must start with "{" or dimension information > LINE 1: SELECT 'found' WHERE 'test' = ANY( (SELECT ARRAY['test','pas... > ^
Per documentation of "ANY" it accepts either an array or a subquery. This is the subquery form. PostgreSQL is trying to convert 'test' into an array in order to match the array column returned by the subquery.
Remove the "SELECT" to make it work the way you expect - i.e., the ANY(array) form of the expression.