Thread: XOR logical operator
Is there a XOR logical operator in Postgresql, or a function for XOR ?? I only found in the docs a Binary XOR (#). I need to do the following checkup: (field1 is NULL XOR field2 is NULL XOR filed3 is NULL) i can't right it like this: ( (field1 is NUll or field2 is NUll) and (field1 is NUll or field3 is NUll) and (field2 is NUll or field3 is NUll) ) But if i have alot of fields : field1,field2,...,field5 ... this will take a hell of a time I can write a function F1 that does the following: if a field is NULL it will return 1 else it will return 0 then i can do: (F1(field1) # F1(field2) # F1(field3) ...) but i just wanted to see if XOR already exists ... __________________________________ Do you Yahoo!? The New Yahoo! Shopping - with improved product search http://shopping.yahoo.com
Hello, PostgreSQL hasn't logical operator XOR. But You can find it in cookbook http://www.brasileiro.net/postgres/cookbook/view-recipes.adp?section_id=41&format=long Regards Pavel On Fri, 17 Oct 2003, Nagib Abi Fadel wrote: > Is there a XOR logical operator in Postgresql, or a > function for XOR ?? > > I only found in the docs a Binary XOR (#). > > I need to do the following checkup: > (field1 is NULL XOR field2 is NULL XOR filed3 is NULL) > > i can't right it like this: > ( > (field1 is NUll or field2 is NUll) > and (field1 is NUll or field3 is NUll) > and (field2 is NUll or field3 is NUll) > ) > > But if i have alot of fields : > field1,field2,...,field5 > ... this will take a hell of a time > I can write a function F1 that does the following: > if a field is NULL it will return 1 > else it will return 0 > > then i can do: > (F1(field1) # F1(field2) # F1(field3) ...) > > > but i just wanted to see if XOR already exists ... > > > > __________________________________ > Do you Yahoo!? > The New Yahoo! Shopping - with improved product search > http://shopping.yahoo.com > > ---------------------------(end of broadcast)--------------------------- > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org >
On Fri, 17 Oct 2003, Nagib Abi Fadel wrote: > Is there a XOR logical operator in Postgresql, or a > function for XOR ?? > > I only found in the docs a Binary XOR (#). > > I need to do the following checkup: > (field1 is NULL XOR field2 is NULL XOR filed3 is NULL) Good idea. hmmm CREATE FUNCTION xor(bool,bool) RETURNS bool AS ' SELECT ($1 AND NOT $2) OR (NOT $1 AND $2); ' LANGUAGE 'sql'; CREATE OPERATOR ~| (PROCEDURE='xor',LEFTARG=bool,RIGHTARG=bool); May not be all that neat but it does work so long as you use brackets... I think improvements could be made. (10 minute job if that) Peter Childs > > i can't right it like this: > ( > (field1 is NUll or field2 is NUll) > and (field1 is NUll or field3 is NUll) > and (field2 is NUll or field3 is NUll) > ) > > But if i have alot of fields : > field1,field2,...,field5 > ... this will take a hell of a time > I can write a function F1 that does the following: > if a field is NULL it will return 1 > else it will return 0 > > then i can do: > (F1(field1) # F1(field2) # F1(field3) ...) > > > but i just wanted to see if XOR already exists ... > > > > __________________________________ > Do you Yahoo!? > The New Yahoo! Shopping - with improved product search > http://shopping.yahoo.com > > ---------------------------(end of broadcast)--------------------------- > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org >
On Fri, 17 Oct 2003 01:04:48 -0700 (PDT), Nagib Abi Fadel <nagib_postgres@yahoo.com> wrote: >Is there a XOR logical operator in Postgresql Yes: != Servus Manfred