Yeah, I tend to agree that null != null is confusing, however that is
the way it is "supposed" to behave, so changing that would break a lot
of code. If I had my way, and the behavior of NULL in operations COULD
be changed, I would opt for the following:

NULL = NULL -> true
As a Boolean, NULL -> false
(NULL = anything other than NULL) -> NULL
(NULL {+,-,*,/,>,<} x) -> NULL
(NULL {AND,OR} x) -> x

The result would be that expressions with "null" are simply ignored,
which as far as I can tell is nearly always the goal when you have to
add "IS NULL" tests to expressions. Of course, a change like this would
break TONS of code, so it will never happen, but I can dream.

John

-----Original Message-----
From: sqlite-users-boun...@sqlite.org
[mailto:sqlite-users-boun...@sqlite.org] On Behalf Of Darren Duncan
Sent: Tuesday, October 27, 2009 8:27 PM
To: General Discussion of SQLite Database
Subject: Re: [sqlite] Grammar of "X is Y"

John Crenshaw wrote:
>> There's nothing wrong with that.
> 
> Not unless style counts for something. X is Y looks far too much like
X
> as Y for my taste. I'd rather do a little extra typing to have clear
> logic than to have clearly unclear code like that. My first thought
when
> I saw this was "doesn't he mean AS?" If I saw something like this in
my
> code I'd expect some major comments to clarify why the code really
does
> mean IS and not AS.

I agree with you regarding syntax and style.

My post was addressing just the "You just want a result set of
true/false 
values?" comment as if that was saying "what reason is there to want a
result 
set of true/false values"; it was not addressing the syntax/style issue.

Regarding syntax and style, I would advocate that simple "=" comparisons
being 
able to test for null would be superior, with the conception being that
null is 
treated as a special marker that is not equal to any other value but is
equal to 
itself.  This is the semantics that SQLite's new "IS" follows I believe.
And 
then you don't need any "is"/"as" confusion.

-- Darren Duncan

> -----Original Message-----
> [mailto:sqlite-users-boun...@sqlite.org] On Behalf Of Darren Duncan
> 
> Jay A. Kreibich wrote:
>> On Tue, Oct 27, 2009 at 04:15:57PM +0000, Tom Sillence scratched on
> the wall:
>>> because I really want to write neat queries like:
>>>
>>> select col1 is col2 from table
>>   Are you sure?  You just want a result set of true/false values?
> 
> There's nothing wrong with that.  Booleans are values like anything
> else, and 
> one should be able to store them as field values and return them in
> rowsets. 
> And very useful in practice, when one considers all the facts one
might
> want to 
> store that are commonly expressed as true/false, such as in a users
> table column 
> named "may_login" or "is_moderated". -- Darren Duncan
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to