I was confused behind the reasoning of the following:
SELECT * FROM table WHERE avalue is null
Returns x number of rows where \'avalue\' is
It is normal. SQL Server does it in the same way. In SQL Server you can use
SELECT * FROM table WHERE ISNULL(avalue, 0) <> 1
For postgresql equivalent watch this: What is the PostgreSQL equivalent for ISNULL()
Consider to use NOT NULL column specification with default value, if it makes sense.
EDIT:
I think it is logic. NULL is not a value, so it is excluded from searching - you have to specify it explicitly. If SQL designers decides to go by second way (include nulls automatically), then you would get more troubles if you need to recognize no values