Хотя чисто "по понятиям" если буквально рассамтривать условие 3 not in (null,1,2) получаем, что "да", 3 не является ни одним из членов перечисленного множества...
Ты в своем сознании замещаешь sql-null на c-null или pascal-nil. Sql-null обозначает, что он может быть и 3, в том числе. Ты не знаешь, является ли null тройкой или пятеркой. Тройка может являться членом этого множества, а не, как ты решил, жестко не является.

