Thread: Infix Function?
Hi- I've defined an XOR function as: CREATE OR REPLACE FUNCTION xor(bool, bool) RETURNS bool AS 'SELECT ($1 OR $2) AND NOT ($1 AND $2);' LANGUAGE 'sql' IMMUTABLE STRICT; Is there anyway to create an infix version of this? I'd really like be able to write (where a..d are some boolean conditions): a XOR b XOR c XOR d instead of: xor(a, xor(b, xor(c, d))) which gets a little hard to understand as it gets long, esp. when mixed with AND & OR. I know one can do this with user-defined operators, but adding a # operator for booleans seems ugly. I thought I saw a way to do this, but now I can't find it in the manual... TIA. --Pete -- Peter Fein pfein@pobox.com 773-575-0694 Basically, if you're not a utopianist, you're a schmuck. -J. Feldman
On Sun, Jun 26, 2005 at 03:42:25PM -0500, Peter Fein wrote: > Hi- > > I've defined an XOR function as: > > > CREATE OR REPLACE FUNCTION xor(bool, bool) > RETURNS bool AS > 'SELECT ($1 OR $2) AND NOT ($1 AND $2);' > LANGUAGE 'sql' IMMUTABLE STRICT; > > Is there anyway to create an infix version of this? I'd really like be > able to write (where a..d are some boolean conditions): Judging by: http://www.postgresql.org/docs/7.4/interactive/sql-createoperator.html operators can't be normal text strings... Hope this helps, -- Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/ > Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a > tool for doing 5% of the work and then sitting around waiting for someone > else to do the other 95% so you can sue them.
Attachment
On Sun, Jun 26, 2005 at 15:42:25 -0500, Peter Fein <pfein@pobox.com> wrote: > > Is there anyway to create an infix version of this? I'd really like be > able to write (where a..d are some boolean conditions): Use <>: area=> select true <> false <> true; ?column? ---------- f (1 row) area=> select false <> true <> false; ?column? ---------- t (1 row)