This is about a bizarre behaviour I found in Microsoft Sql Server. Please correct me if I\'m wrong.
SELECT COUNT(*) FROM TABLEA
WHERE [Column1] IS NULL;
SQL uses three valued logic.
t1.[Column1] NOT IN ('Cross/Up sell', 'Renegotiation', 'Renewal')
is equivalent to
t1.[Column1] <> 'Cross/Up sell' AND
t1.[Column1] <> 'Renegotiation' AND
t1.[Column1] <> 'Renewal')
When t1.[Column1] is NULL
this expression evaluates to UNKNOWN
rather than TRUE
so these rows are not returned.
The only time NULL NOT IN ( ... )
will be returned is if the NOT IN
clause evaluates to an empty set.