Hacker News new | ask | show | jobs
by gigatexal 526 days ago
This is the correct way of thinking about things. Null is one of the hardest things for traditional software engineers in my experience as a guy who came up as a data admin.
3 comments

Null in not-SQL (which is most things) usually isn't this tortured and isn't hard.
That's because null in not-SQL is a rather different concept, and while it's pretty easy to understand it's absolutely is hard to actually work with. Hoare didn't call it a "billion dollar mistake" on a whim.
I don't know about that. null/undefined in javascript gives it a pretty good run for it's money
Because they're two orthogonal problems. It's not like you do select distinct from program variables group by scope in your frontend programming language.
Yeah the 3 valued logic of SQL trips people up, me too from time to time
SQL is not three valued. Neither is NULL. BOOLEAN is accused of being three-valued but it has two values and like all values they can be unknown. Similarly a SMALLINT has 65,536 possible values not 65,537.
It’s not.

Your link makes the same mistake I already addressed. It conflates nullable booleans with tri-state logic.

Null is not a value. It is the absence of a value.

> The SQL null value basically means “could be anything”.

This is wrong. Null means it could be any valid value but that value is unknown. If the datatype is DATE then the value cannot be boolean TRUE or the string ‘purple’.

How is that different than “anything”?

If I’m comparing a value of type date to a null I still think it works as it should if value is “unknown”. What greater insight or context do we have if it’s a small-int null?

> Null is one of the hardest things for traditional software engineers

Making them harder is not better.

Never said it was
The Maybe monad is really well understood at this point.