Powodem jest to, że zgodnie ze specyfikacją SQL Foo IN(A,B,C)
tłumaczy na ( Foo = A Or Foo = B Or Foo = C )
. Tak więc, jeśli mamy Foo In(Null, 1, 2)
otrzymujemy Foo = Null Or Foo = 1 Or Foo = 2
. Ponieważ Foo = Null
jest zawsze UNKNOWN
i oceniane jako False
do celów filtrowania wartości null w wyrażeniu IN nie zwrócą żadnych wyników.