Hacker News new | ask | show | jobs
by thayne 521 days ago
If only it had a name that was more indicative of that, like UNKNOWN, or UNDEFINED or INDERTIMINATE or something.
4 comments

Javascript has both null and undefined and I'm not sure that's a good idea. At least in SQL we only have one of them, but it can mean unknown or it can mean N/A or even false. It's like a joker, what it means depends on how you use it.
No, it's not those other things, that's just using the tool incorrectly. A NULL is definitely "we dont know", not false, not N/A, especially not any known value.
Except in every other programming language with a null, null is the definite absence of something
Yes and I think that Clojure handles nil pretty well, and it's a functional programming language like SQL. It's also interesting to see that Typescript has added an unknown type. So something that's a value in SQL (null being unknown) is a type in TS.
Sure, and we're talking about SQL nulls in this context, which is why I am strict in my definition.
Or VBA, which has Empty, Null, and Nothing:

https://excelbaby.com/learn/the-difference-between-empty-nul...

(and sometimes Missing)

Null is shorter, and given the nightmarish queries I've had to read/write, I'll take any mercy that comes my way.
E. F. Codd originally suggested two types of values: "unknown" and "missing". Somehow we got NULL, which represents both.

ANSI SQL:1991 provides an optional feature that introduces a special value UNKNOWN to boolean expressions [1]. But few databases support it. MSSQL [2] is one of the few that do. As I understand it, it's not a data type that be used in tables, but is only a potential result of boolean operations.

[1] https://modern-sql.com/concept/three-valued-logic

[2] https://learn.microsoft.com/en-us/sql/t-sql/language-element...

Honestly, at this point I just wish SQL servers supported proper discriminated union types and nullable columns were implemented as some kind of MaybeKnown<T> and I could just have a normal Maybe<T> with normal equality semantics if I wanted.

SQL needs to join 21st century type systems... or needs to get replaced altogether. SQL is the FORTRAN of relational programming languages, but hangs around because every time somebody tries to replace it they throw the relational-theory baby out with the bath-water.

> SQL is the FORTRAN of relational programming languages

and what is an alternative to sql ... quel?