Comment by munchler
3 days ago
I don't buy that. The string "Null" is different from the keyword null in programming, so `if $var = null` would be false when $var is the string "Null".
Note that when interpolated into SQL, the contents of $var must be surrounded by single quotes, so you end up with `insert into Table (Name) values ('Null')`, which correctly inserts the string "Null" into the table.
If you were to leave off the quotes, you'd get a SQL syntax error for all other people, so that code would never make it into production. E.g. `insert into Table (Name) values (Smith)` is a syntax error.
> $req = "insert into people (name) ('$name')";
> $db.exec($req)
Now you have "null" as strings in the DB in any language that interpolates null as "null".
> select * from people where name is not null
"Why do we see nulls in testing? Damn, the DB has dirty data. Go through the trouble of fixing it, or...
> select * from people where name is not null and name != "null"
The end. Sorry Mr Null.
> I don't buy that.
I think you underestimate how many systems are stringly-typed, not just in terms of problematic programming languages, but data traveling between different APIs or through literal dead-tree paperwork.
They don't have to all fail at null handling, just one or two can gum up the works.
I don't buy that type-checkers would look at the value null, and say "Yep, that's a String/Integer/User". But here we are.