El motivo es que, según la especificación SQL, Foo IN(A,B,C)
se traduce a ( Foo = A Or Foo = B Or Foo = C )
. Por lo tanto, si tenemos Foo In(Null, 1, 2)
obtenemos Foo = Null Or Foo = 1 Or Foo = 2
. Desde Foo = Null
siempre es UNKNOWN
y evaluado como False
con fines de filtrado, los valores nulos en su expresión IN no arrojarán resultados.