NULL values should be checked using IS NULL and IS NOT NULL operators only.
In cases of other comparisons the result may vary between different database management systems, nut it will be UNDEFINED in most of the cases.
If а = NULL evaluates to UNDEFINED then SQL handles it according to the following logic:
FALSE OR UNDEFINED = UNDEFINED
TRUE OR UNDEFINED = TRUE
Therefore, the condition will be met only by two records from the table.