At 9:06p -0400 on 30 Apr 2007 John Kebbel wrote:
> I'm having problems understanding NULL. I grasp what a NULL value is,
A NULL value is rather an oxymoron. It'd be more accurate to say
that NULL means "absence of a value".
> but I can't get NULL to perform correctly. For instance, if I do a
> Select statement, I see that I have columns with a NULL value.
>
> select first, last, suffix from persons LIMIT 5;
> +-----------+----------+--------+
> | first | last | suffix |
> +-----------+----------+--------+
> | Benjamin | Page | NULL |
> | Jonathan | Watson | NULL |
> | Jose | Thorson | NULL |
> | Alejandro | Nickels | NULL |
> | Griselda | Richards | NULL |
> +-----------+----------+--------+
> 5 rows in set (0.01 sec)
>
> Logically, it seems that a Select statement should find these five
> plus
> any other NULL values in the suffix column. However, such a select
> statment returns an empty set.
>
> mysql> select first, last, suffix from persons where suffix IS NULL;
> Empty set (0.00 sec)
>
> Does anyone see what I'm doing wrong? (Thanks in advance for any
> help.)
Caveat emptor: I haven't tested this in about a year.
Are you perchance using a table type of MyISAM? I seem to recall
that MyISAM has a hard time actually representing NULL internally.
[ ... Thinks for a minute ... ] I remember something about spaces,
like, I think I did
INSERT ( val1, val2, NULL ) INTO myTable;
and was only able to get the tuples back when I did
SELECT * FROM myTable WHERE col3 = ' '; -- a space character
If this is the case, you might consider using a different table type,
such as InnoDB.
HTH,
Kevin