Re: functions in WHERE clause

From: Markus Schaber <schabi(at)logix-tt(dot)com>
To: sramsay(at)uga(dot)edu
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: functions in WHERE clause
Date: 2006-03-27 13:32:51
Message-ID: 4427E983.8050601@logix-tt.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hi, Steve,

sramsay(at)uga(dot)edu wrote:

> SELECT * from some_table WHERE
> test_for_equality_is_syntactically_ugly;

> The WHERE clause expects the function to return a boolean value. I
> can certainly return a boolean value from a function, but here it
> seems to me that what the function really has to do is return a
> set of boolean values -- the test in the WHERE clause sometimes
> evaluates to true and sometimes evaluates to false, and that is in
> turn used to constrain the query results. But you can't return a
> set of anything (I don't think) in a WHERE clause, because it seems
> to want a singular boolean value.

And this is as it is intended. The equality test is applied row-by-row,
and for each row, it is either true or false, but not undecided.

So your query should look like

SELECT * FROM some_table WHERE your_function(column_a, column_b);

> Is it possible to do what I'm trying to do? I've written a few
> simple sql and pl/pgsql functions over the years, but I'm no expert.

Yes, it is.

HTH,
Markus

--
Markus Schaber | Logical Tracking&Tracing International AG
Dipl. Inf. | Software Development GIS

Fight against software patents in EU! www.ffii.org www.nosoftwarepatents.org

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Jim C. Nasby 2006-03-27 13:48:31 Re: Expressing a result set as an array (and vice versa)?
Previous Message John DeSoi 2006-03-27 13:32:39 Re: Problem using set-returning functions