BUG #1921: NULL<>NULL ?!?!?!?!?!?!?

Started by BogDan Vatraover 20 years ago4 messagesbugs
Jump to latest
#1BogDan Vatra
bog_dan_ro@yahoo.com

The following bug has been logged online:

Bug reference: 1921
Logged by: BogDan Vatra
Email address: bog_dan_ro@yahoo.com
PostgreSQL version: 8.0.3
Operating system: win xp pro
Description: NULL<>NULL ?!?!?!?!?!?!?
Details:

Please execute this query:

create table test (id serial, tt varchar(50));
insert into test (tt) values(NULL);
select tt from test where tt=NULL;

This should return 1 row but ...
An then try

select tt from test where tt<>NULL;

0 row(s) !!!

#2Gaetano Mendola
mendola@bigfoot.com
In reply to: BogDan Vatra (#1)
Re: BUG #1921: NULL<>NULL ?!?!?!?!?!?!?

BogDan Vatra wrote:

The following bug has been logged online:

Bug reference: 1921
Logged by: BogDan Vatra
Email address: bog_dan_ro@yahoo.com
PostgreSQL version: 8.0.3
Operating system: win xp pro
Description: NULL<>NULL ?!?!?!?!?!?!?
Details:

Please execute this query:

create table test (id serial, tt varchar(50));
insert into test (tt) values(NULL);
select tt from test where tt=NULL;

This should return 1 row but ...
An then try

select tt from test where tt<>NULL;

0 row(s) !!!

This is not a bug. If you want find all values with that
field null you have to do:

select tt from test where tt is null;

And I can assure you this is what the standard say.

Regards
Gaetano Mendola

#3j6m
j6m@cvni.net
In reply to: BogDan Vatra (#1)
Re: BUG #1921: NULL<>NULL ?!?!?!?!?!?!?

Hi,

The SQL standard requires that null values do not equate any value,
including themselves.

Corrected syntax of your queries is shown below.

If I recall it correctly, this nehaviour was enforced in the 7.2->7.3 or
7.1->7.2 evolution.

If for instance a char(1) field called 'myfield' admits several values
rangeing from 'A' to 'I' and null, extracting all rows where char is neither
'C' or 'F' should imply the following where-clause

... where myfield is null or myfield is not in ('C','F')

A cluase like "where myfield is not in ('C','F')" would not extract all rows
where myfield is null.

Hope this helps

Regards
J6M

----- Original Message -----
From: "BogDan Vatra" <bog_dan_ro@yahoo.com>
To: <pgsql-bugs@postgresql.org>
Sent: Thursday, September 29, 2005 10:38 AM
Subject: [BUGS] BUG #1921: NULL<>NULL ?!?!?!?!?!?!?

create table test (id serial, tt varchar(50));
insert into test (tt) values(NULL);
select tt from test where tt=NULL;

select tt from test where tt is null ;

select tt from test where tt<>NULL;

select tt from test where tt is not null ;

#4David Fetter
david@fetter.org
In reply to: BogDan Vatra (#1)
Re: BUG #1921: NULL<>NULL ?!?!?!?!?!?!?

On Thu, Sep 29, 2005 at 09:38:54AM +0100, BogDan Vatra wrote:

The following bug has been logged online:

Bug reference: 1921
Logged by: BogDan Vatra
Email address: bog_dan_ro@yahoo.com
PostgreSQL version: 8.0.3
Operating system: win xp pro
Description: NULL<>NULL ?!?!?!?!?!?!?
Details:

Please execute this query:

create table test (id serial, tt varchar(50));
insert into test (tt) values(NULL);
select tt from test where tt=NULL;

This should return 1 row but ...
An then try

select tt from test where tt<>NULL;

0 row(s) !!!

It is not a bug. NULL isn't a datum. It's a state of ignorance. If
I don't know what your birthday is and I don't know what your
coworker's birthday is, I also don't know whether they are equal, and
so the only right answer to "Is BogDan's birthday unequal to his
coworker's?" is "I don't know."

HTH :)

Cheers,
D
--
David Fetter david@fetter.org http://fetter.org/
phone: +1 510 893 6100 mobile: +1 415 235 3778

Remember to vote!