>>> SELECT * FROM tests WHERE test_id IS NULL
>> 
>> Yes, that works, but I was also trying SELECT * instead of just the
>key 
>> field (just a typo in the example).  The problem was in the equal sign
>
>> versus the 'IS' operator.  Any reason why MySQL does not honor 
>> <field>=NULL?  Seems kind of odd.
>
>Sql standard says you use IS NULL.
>[/snip]
>
>And the reason for that is because nothing is actually equal to NULL.
>For a field to be equal to NULL it would actually have to contain NULL,
>in which case it would not be actually NULL.

What?

NULL doesn't equal NULL because NULL means "unknown".

A column can have 2 states: known or unknown (NULL). If the
case of a "known" state, the column has a value, in cause of unknown,
it's NULL.

You cannot compare to "unknown". So this is why the SQL standard
says: you either ask for a specific value (eg: myid = 1002) or you ask
for a state: "myid IS NULL" or "myid IS NOT NULL" (= filled).

It has nothing to do with "contain NULL" or whatever.





Martijn Tonies
Database Workbench - development tool for MySQL, and more!
Upscene Productions
http://www.upscene.com
My thoughts:
http://blog.upscene.com/martijn/
Database development questions? Check the forum!
http://www.databasedevelopmentforum.com

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to