Re: Select .... where id not in (....) returns 0 incorrectly - Mailing list pgsql-general

From David Rowley
Subject Re: Select .... where id not in (....) returns 0 incorrectly
Date
Msg-id CAApHDvqh_LOKwKFaSUk83ELnftvYxobKaxOdTEruUmezuGM6PA@mail.gmail.com
Whole thread Raw
In response to Re: Select .... where id not in (....) returns 0 incorrectly  ("J. Roeleveld" <joost@antarean.org>)
Responses Re: Select .... where id not in (....) returns 0 incorrectly  ("J. Roeleveld" <joost@antarean.org>)
List pgsql-general
On Tue, 5 Apr 2022 at 01:21, J. Roeleveld <joost@antarean.org> wrote:
> Personally, I think NULL should be treated as a seperate value and not lead to
> strange behaviour.

I think the rationale behind IN and NOT IN are that c IN(1,2,3) is
equivalent of writing: c = 1 OR c = 2 OR c = 3, whereas NOT IN(1,2,3)
would be the same as c <> 1 AND c <> 2 AND c <> 3.  You can imagine
what would happen in the latter case if you replaced 3 with NULL. "c
<> NULL" is NULL therefore, due to the quals being ANDed, will cause
the WHERE clause not to match anything.

In any case, it's what the SQL standard says, so that's the way we do it.

David



pgsql-general by date:

Previous
From: Sebastien Flaesch
Date:
Subject: Re: Transaction and SQL errors
Next
From: Lucas
Date:
Subject: Load Balancer with PostgreSQL