I have seen database interfaces (e.g. framework libraries) that return 'null' as a string for null columns. I believe there was a flag that would turn this on or off for debugging. This flag allows developers to easily determine if the empty field was a result of a null value or an empty value. This is a bad setting, especially in production, and would explain the issues explained in the article.
The reverse processing of converting 'null' to a null value should generate an application error for a name field. I would expect this to be rather quickly resolved.
Answer from BillThor on Stack ExchangeI have seen database interfaces (e.g. framework libraries) that return 'null' as a string for null columns. I believe there was a flag that would turn this on or off for debugging. This flag allows developers to easily determine if the empty field was a result of a null value or an empty value. This is a bad setting, especially in production, and would explain the issues explained in the article.
The reverse processing of converting 'null' to a null value should generate an application error for a name field. I would expect this to be rather quickly resolved.
There's a good chance that a good chunk of your confusion stems from the journalist's. The article talks about problems using entire application systems, not just databases. Completely reasonable since this is a piece of writing aimed at mass consumption, but technical details are glossed over or misunderstood by the author.
Likely a number of these issues are caused at the application layer, rather than the DB's API. Magic values are an anti-pattern which is ridiculously hard to stamp out of the industry. Very easily some programmer could have written a condition along the lines of "someone typed 'null'? They must mean there's no value, because that's what null means!" A misguided attempt at preventing SQL injection could also be responsible for the mentioned mistreatment of Null, or the Hawaiian last name which contains a single quote, which is also the standard SQL string delimiter.
An application which incorrectly transforms these values into NULL or an empty string can easily create errors if business logic or DB constraints expect something different. This naturally results in exactly the frustrating user experience described in the article.
Anyone else consider their gender 'null'?
validation - Can a person have null name? - Stack Overflow
How does a surname of Null cause problems in many databases? - Software Engineering Stack Exchange
We have an employee whose last name is Null.
Am I the only one who is kind of shocked that this kind of trivial issue exists in such a major library for a well-known technology? (Additionally, some of the 'fixes' suggested are equally scary.)
Making sure a library properly handles 'null' values would seem to be one of the primary test cases...
More on reddit.comSo the label 'nonbinary' is one I felt has fit for a while, though it has no meaningful impact on my day to day life. Anyone who knows me IRL has no reason to think of me as anything other than a somewhat GNC cis man, and when it comes to pronouns it's literally 'call me whatever the heck you want' if anyone asked me.
I never thought it of it much beyond that but over time I've realised what 'gender' fits me.
Nullgender.
Not agender. Not linked to male or female in any way. Just not there, like a NULL 'value' in a data set (I work with data sets all the time in my day job).
Not exactly a life-changing revelation, but nice to put a stronger label on it.
Anyone else feel similar?
It doesn't cause database problems. It causes problems in applications written by developers that don't understand databases. At the root of the problem is that much database-related software displays a NULL record as the string NULL. When an application then relies on the string form of a NULL record (likely also using case-insensitive comparison operations), then such an application will consider any "null" string to be NULL. Consequently a name Null would be considered to not exist by that application.
The solution is to declare non-null columns as NOT NULL in the database, and to not apply string operations to database records. Most languages have excellent database APIs that make string-level interfaces unnecessary. They should always be preferred, also since they make other mistakes such as SQL injection less likely.
To answer your specific question there are many steps along the chain of events between a web form and the database. If the last name Null is erroneously interpreted as a NULL value then the system may reject a perfectly valid name as being invalid. This can happen at the database layer as explained by amon. Incidentally if this is the specific issue then the database is also probably open to SQL injection AKA the Bobby Tables attack. Another step in the chain that could be causing problems is the serialization process.
Overall the article was about a bigger problem. The world is a big messy place that doesn't always conform to our assumptions. This is especially apparent when you try to internationalize your application. At the end of the day we need to ensure our applications handle and encode our data properly. It is up to the business to decide how many resources we dedicate towards supporting increasingly complicated edge cases. While I fully support being inclusive, I will understand if the business decides that "the artist formally known as Prince" needs to use a Unicode character to represent his name in our database.