The SQL standard requires that if either one of the two operands of an equality comparison is NULL, the result is UNKNOWN. Transact-SQL treats NULL values differently.
Sybase NULL mode – “val = NULL” is true when “val” is NULL
ANSI NULL mode – “val = NULL” is unknown when “val” is NULL
The ANSI rule for the where and on clauses return rows that are true, and rejects rows that are both false and unknown.
The ANSI rule for a check constraint rejects values that are false. For this reason, unknown or true results are not rejected.
If you:
Enable ansinull mode – do not use the Sybase NULL comparisons (val = NULL or val != NULL).
Expect to use ANSI-null mode during insert and update – do not use the Sybase NULL comparisons in check constraints.
Instead, use the ANSI IS NULL or IS NOT NULL syntax to prevent from having unexpected results.