If an attribute value is missing for a record, then the attribute is referred to as being NULL. For example, if a record does not contain an assignment for a Price attribute, EQL defines the Price value as NULL.
Type of operation | How EQL handles NULL values |
---|---|
Arithmetic operations and non-aggregating functions | The value of any operation on a NULL value is
also defined as NULL.
For example, if a record has a value of 4 for Quantity and a NULL value for Price, then the value of Quantity + Price is considered to be NULL. |
Aggregating functions | EQL ignores records with NULL values.
For example, if there are 10 records, and 2 of them have a NULL value for a Price attribute, all aggregating operations ignore the 2 records, and instead compute their value using only the other 8 records. If all 10 records have a NULL Price, then most aggregations, such as SUM(Price), also result in NULL values. The exceptions are COUNT and COUNTDISTINCT, which return zero if all the records have a NULL value (That is, the output of COUNT or COUNTDISTINCT is never NULL). Note, however, that COUNT(1) does count records with NULL values. |
Boolean operators | See Boolean operators. |
Grouping expressions | If grouping from intermediate results, EQL
does not ignore records that have a NULL value in any of the group keys, and
considers the record to be present in a group. Even all-NULL groups are
returned.
If grouping from the corpus, EQL ignores records that have a NULL value in any of the group keys, and does not consider the record to be present in any group. |
Filters | When doing a comparison against a specific
value, the NULL value will not match the specified filter, except for the
IS NULL filter.
Note that:
For example, if record A has price 5, and record B has no
price value, then:
|
Sorting | For any sort order specified, EQL returns:
|