Заметим, что отсутствующие и пустые значения - это две большие разницы. Целое, значение которого отсутствует, это не то же самое, что целое, значение которого равно нулю. Неопределенная строка - это не то же самое, что строка нулевой длины или строка, содержащая одни пробелы. Эта разница важна, так как сравнения между пустыми и неопределенными значениями всегда будут неудачны. Фактически, NULL-значения даже не равны друг другу в таких сравнениях.
Возможность неопределенных значений в реляционных базах данных означает, что для любого сравнения возможны три результата: Истина (True), Ложь (False) или Неизвестно (Unknown). Это требует использования трехзначной логики.
| AND
| True
| False
| Unknown
| | True
| True
| False
| Unknown
| | False
| False
| False
| False
| | Unknown
| Unknown
| False
| Unknown
|
| | OR
| True
| Fa
se
| Unknown
| | True
| True
| True
| Tr
e
| | False
| True
| False
| Unknown
| | Unknown
| True
| Unknown
| Unknown
|
|
| NOT
| True
| False
| Unknown
| |
| False
| True
| Unknown
|
|
|
Для выявления равенства значения некоторого столбца неопределенному, применяют специальные стандартные предикаты;
<Столбец> IS NULL и < Столбец > IS NOT NULL.
Пример 6.
| Результат
| |
| Продукт
|
| Говядина
|
| Судак
|
Вывести все продукты, не содержащие углеводов
SELECT Продукт