How strategy functions handle null values

If you specify a null value for any of the arguments of a strategy function in the WHERE clause of a query, the query always returns 0 rows. This is true even if you specified that the strategy function handles nulls when you created the strategy function with the CREATE FUNCTION statement.

For example, assume you previously inserted a null value into the circle_tab table with the following INSERT statement:
INSERT INTO circle_tab VALUES (1, NULL);
The following query that uses the Equal strategy function to search for null values always returns 0 rows, even though a null value does exist in the table:
SELECT * FROM circle_tab WHERE Equal (circles, NULL);
Zero rows are always returned because null values are never part of an R-tree index; they are stored only in the table. To search for null values in a column on which you created an R-tree index, use the IS NULL condition in the WHERE clause of the query, as the following example shows:
SELECT * FROM circle_tab WHERE circles IS NULL;

The preceding query does not use the R-tree index, and thus the database server must perform a full table scan. However, because the query is searching the table, the query returns what you expect: those rows whose circles column is null.