La raison est que selon la spécification SQL, Foo IN(A,B,C)
se traduit par ( Foo = A Or Foo = B Or Foo = C )
. Ainsi, si nous avons Foo In(Null, 1, 2)
on obtient Foo = Null Or Foo = 1 Or Foo = 2
. Puisque Foo = Null
est toujours UNKNOWN
et évalué à False
à des fins de filtrage, Nulls dans votre expression IN ne renverra aucun résultat.