Thread: Some more weird NULL behavior

Some more weird NULL behavior

From
Ludwig Lim
Date:
Hi:
 I tried the following: CREATE TABLE x(      a  NUMERIC(5,0),      b  VARCHAR(5) );
 CREATE TABLE y(      a  INTEGER,      b  VARCHAR(5) );
 INSERT INTO x(b) VALUES ('LUDZ'); INSERT INTO y(b) VALUES ('TEST');
 SELECT x.b,y.b FROM x,y WHERE x.a=y.a  returns zero rows.
 However: SELECT b FROM x WHERE a IS NULL returns 'LUDZ' SELECT b from y WHERE a IS NULL returns 'TEST'
 I also tried SELECT x.b,y.b FROM x,y WHERE x.a = CAST(y.a AS INTEGER);
 But it also returns zero rows.


Thank you in advance,
ludwig. 

__________________________________________________
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!
http://sbc.yahoo.com


Re: Some more weird NULL behavior

From
Stephan Szabo
Date:
On Fri, 8 Nov 2002, Ludwig Lim wrote:

> Hi:
>
>   I tried the following:
>   CREATE TABLE x(
>        a  NUMERIC(5,0),
>        b  VARCHAR(5)
>   );
>
>   CREATE TABLE y(
>        a  INTEGER,
>        b  VARCHAR(5)
>   );
>
>   INSERT INTO x(b) VALUES ('LUDZ');
>   INSERT INTO y(b) VALUES ('TEST');
>
>   SELECT x.b,y.b FROM x,y WHERE x.a=y.a
>   returns zero rows.

A comparison of two NULL values does not
return true, it returns unknown.
If you want to say equal or both null you
should do it explitly.
(x.a=y.a) or (x.a is null and y.a is null)