Re: [HACKERS] Subselects and NOTs
Vadim Mikheev <vadim@sable.krasnoyarsk.su>
From: "Vadim B. Mikheev" <vadim@sable.krasnoyarsk.su>
To: Mattias Kregert <matti@algonet.se>
Cc: ocie@paracel.com, pgsql-hackers@hub.org
Date: 1998-02-24T01:30:27Z
Lists: pgsql-hackers
Mattias Kregert wrote: > > ocie@paracel.com wrote: > > > > On another note, I have been following this "not a in b" vs "not a in > > b" discussion and it seems to me that the two statements are logically > > equivalent. Testing for a's membership in the set b and then negating > > should be equivalent to testing for a's membership in the compliment > > of set b. In these tests, nulls seem to be treated just like any > > other value. > > > > Ocie > > According to the SQL standard: Where 'NOT' and 'IN' are written next to > each other, this is an alias for "<>ALL", and 'IN' is an alias for > "=ANY". Therefore: > > "a NOT IN b" evaluates as: (a) <>ALL (b) > "NOT a IN b" evaluates as: NOT ( (a) =ANY (b) ) > > ...which give these results: > > NOT 1 IN 2 true > 1 NOT IN 2 true > > NOT 1 IN NULL true [NOT (1 =ANY NULL)] > 1 NOT IN NULL false [1 <>ALL NULL] This is exactly how Postgres works now and differ from 3 "big boys". If there are no objections then I'll leave this as is. We can return to this issue latter. Vadim