Postgres NOT IN (null) gives no result

I'm using Postgres with this query

from Entity this_ 
(this_.ID not in (null))

Why does this give me no results? I would expect to get all rows where id is not null


(this_.ID not in (1))

i get the expected results


  • The result of [not] in (null) will always be null. To compare to null you need is [not] null or is [not] distinct from null

    select *
    from Entity this_ 
    where this_.ID is not null

    If you want where (ID not in (1,null)) as in your comment you can do

    where ID is not null and ID not in (1)