John Keith Hohm wrote: > select * from ( > select * from (VALUES ('100'), ('JOHN')) as A (n) > where trim(trim(n), '0123456789') = '' > ) as B where n::integer <> -1; > I'm also interested in responses of the form "why not just do X?". Why not just add an "OFFSET 0" in the subselect so that the optimizer does not flatten the query? select * from ( select * from (VALUES ('100'), ('JOHN')) as A (n) where trim(trim(n), '0123456789') = '' offset 0) as B where n::integer <> -1; -- Alvaro Herrera http://www.CommandPrompt.com/ The PostgreSQL Company - Command Prompt, Inc.