NULL
in queries NULL
behaviours
The following example illustrates the different behaviour of NULL
when compared to 'normal' vlaues.
1. Look at the following two queries:
SELECT * |
SELECT* |
Do they always return the same rows?
Why?
No, if a NULL
value exists in the ItemPrice column the two queries will not return the same result.
The second query (SELECT * FROM Item;
) will always return all the rows in the table regardless of any NULL
values.
The first query will not return any rows that have NULL
in the ItemPrice
column. If a row has a NULL
value for ItemPrice
both conditions (ItemPrice = 600, ItemPrice <> 600
) will return UNKNOWN
and thus the row will not be included in the output for the SELECT
.
Note that for all rows which have a non-NULL
value for ItemPrice
, one of the two conditions must be true - a value must equal 600
or not equal 600
. These rows will all be included in the output.
NULL
NULL
is ignored in aggregation functions (MIN, MAX, SUM, AVG
and COUNT
). NULL
never contributes to a sum, average or count and can never be the minimum or maximum of a column.
2. Look at the following two queries:
SELECT COUNT(*) |
SELECT COUNT(ItemPrice) |
Do they always return the same result?
Why?
The first query counts the number of items while the second query counts the number of items we have a price for. If ItemPrice
is never NULL
the results of the two queries will be the same. However if ItemPrice
can be NULL
the result of the two queries need not be the same.