Use null in WHERE in WHERE

You can search for null values by using the null keyword in SOQL queries.
This example query returns the account IDs of all events with a non-null activity date.
1SELECT AccountId
2FROM Event
3WHERE ActivityDate != null
If you run a query on a boolean field, null matches FALSE values. For example, if Test_c is a boolean field, then the following query returns all the account records where Test_c is false:
1SELECT Id, Name Test_c
2FROM Account
3WHERE Test_c = null

The clause WHERE Test_c = null is equivalent to WHERE Test_c = false. The clause WHERE Test_c != null is equivalent to WHERE Test_c = true.

The WHERE clause behaves in two different ways, depending on the version, when handling null values in a parent field for a relationship query. In a WHERE clause that checks for a value in a parent field, the record is returned even if the parent does not exist.
1SELECT Id
2FROM Case
3WHERE Contact.LastName = null
Case record Id values are returned.