Re: no cond returns diff res than cond or !cond

From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
To: Markus Bertheau <twanger(at)bluetwanger(dot)de>
Cc: postgres sql list <pgsql-sql(at)postgresql(dot)org>
Subject: Re: no cond returns diff res than cond or !cond
Date: 2001-11-12 14:39:50
Message-ID: 20011112063643.M74385-100000@megazone23.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On 12 Nov 2001, Markus Bertheau wrote:

> cenes_test=> select version();
> version
> -------------------------------------------------------------
> PostgreSQL 7.1.3 on i686-pc-linux-gnu, compiled by GCC 2.96
> (1 row)
>
> cenes_test=> select count(*) from produkte;
> count
> -------
> 36384
> (1 row)
>
> cenes_test=> select count(*) from produkte where artnummer = NULL or
> artnummer != NULL;
> count
> -------
> 36326
> (1 row)
>
> 2nd query 58 less than first.
>
> bug?

Probably not. You don't want to compare to NULL (although there is a
hack which makes an explicit = NULL into the correct comparison), you
want to use IS NULL and IS NOT NULL. Comparing to NULL returns an
unknown (neither true nor false) and negating that comparison still
returns unknown. The hack is in there for compatibility with an
MS Access feature, and I think is optional in 7.2, and turns = NULL
into IS NULL, there's no equivalent hack for != NULL AFAIK.

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Markus Bertheau 2001-11-12 14:47:09 integer attribute 1672 != 1672
Previous Message Markus Bertheau 2001-11-12 14:26:44 no cond returns diff res than cond or !cond