It can be used on a type to control Nullability, it is then called the "Null Forgiving Operator". Basically, null! applies the ! operator to the value null. This overrides the nullability of the value null to non-nullable, telling the compiler that null is a "non-null" type.
The reasoning is that a null means "unknown", so the result of any comparison to a null is also "unknown". So you'll get no hit on rows by coding where my_column = null. SQL provides the special syntax for testing if a column is null, via is null and is not null, which is a special condition to test for a null (or not a null).
In order to be able to query this difference, JavaScript has null and undefined: While null is - just like in other languages an object, undefined cannot be an object because there is no instance (even not a null instance) available.
The expression "NULL = NULL" evaluates to NULL, but is actually invalid in SQL; yet ORDER BY treats NULLs as equal (whatever they precede or follow "regular" values is left to DBMS vendor).
135 NULL has no value, and so cannot be compared using the scalar value operators. In other words, no value can ever be equal to (or not equal to) NULL because NULL has no value. Hence, SQL has special IS NULL and IS NOT NULL predicates for dealing with NULL.
Understanding the difference between “IS NULL” and “= NULL” When a variable is created in SQL with the declare statement it is created with no data and stored in the variable table (vtable) inside SQLs memory space. The vtable contains the name and memory address of the variable.
The main difference between e != null and e is not null is the way the the compiler executes the comparison. Microsoft: "The compiler guarantees that no user-overloaded equality operator == is invoked when expression x is null is evaluated." Bottom Line: If you are writing code that you don't want to depend on someone's implementation of the != and == operators, use is null and is not null ...
From the preceding examples, it is clear that undefined and null are two distinct types: undefined is a type itself (undefined) while null is an object. Proof :
The one benefit I can see is that it does not require knowing that == null and != null treat a declared variable with value undefined as equal to null. IMHO, that isn't reason enough to use this unfamiliar (and inefficent - creates an array every time) syntax.