Most of the existing answers focus on the non-SQL parts of an application, but there may be a problem in SQL too:
If instructed to filter out records where a user's last name is not available, someone who doesn't understand SQL very well may write a filter WHERE u.lastname != 'NULL'. Because of the way SQL works, this will appear to check whether u.lastname IS NOT NULL: all NULL records get filtered out. All non-NULL records remain.
Except of course for records where u.lastname == 'NULL', but there may not have been any such record available during testing.
This becomes more likely if the SQL is generated by some sort of framework, where that framework doesn't expose an easily accessible way to check for non-NULL-ness with parameters, and someone notices "hey, if I pass in the string NULL, it does exactly what I want!"
null != "null"Barring a deliberate sql injection attack on a poorly written application it is not a problem and is definitely not a ubiquitous database problem. – Mar 26 '16 at 18:16nullis not the same thing as theStringwith the 4 bytes"null". But here goes; That is not how databases compare things.nullis a special value that requires a special keyword to compare against inSQL.IS NULLvs using the=which compares non-null things. So there is not a single existing RDBMS that uses the SQL language that would have the problem with someone's name being entered in as aStringwith the value of `"Null'". – Mar 26 '16 at 21:02smithorNullor'; DROP TABLE *; --. But there are poorly written programs and they choke on all sorts of data, such as people with names likeO'Leary.Nullis not inherently bad. It just excites bugs in poorly-written code. – Andy Lester Mar 31 '16 at 18:16