Spec-Zone .ru
спецификации, руководства, описания, API
|
NULL
значение может быть удивительным, пока Вы не привыкаете к нему. Концептуально,
NULL
означает "недостающее неизвестное значение",
и оно обрабатывается несколько по-другому от других значений.
Протестировать на NULL
, используйте IS NULL
и IS NOT NULL
операторы, как показано здесь:
mysql> SELECT 1 IS NULL, 1 IS NOT
NULL;
+-----------+---------------+| 1 IS NULL | 1 IS NOT NULL |+-----------+---------------+| 0 | 1 |+-----------+---------------+
Невозможно использовать арифметические операторы сравнения такой как =
, <
, или <>
протестировать на NULL
. Чтобы
демонстрировать это для вас непосредственно, попробуйте следующий запрос:
mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL,
1 > NULL;
+----------+-----------+----------+----------+| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |+----------+-----------+----------+----------+| NULL | NULL | NULL | NULL |+----------+-----------+----------+----------+
Поскольку результат любого арифметического сравнения с NULL
также NULL
, невозможно получить значимые следствия таких сравнений.
В MySQL, 0
или NULL
ложь средств и что-либо еще
означают истину. Значение истинности значения по умолчанию от логической операции 1
.
Этот специальный режим NULL
то, почему в предыдущем разделе было необходимо
определить, какие животные больше не являются живым использованием death IS NOT
NULL
вместо death <> NULL
.
Два NULL
значения расцениваются как равные в a GROUP
BY
.
Делая ORDER BY
, NULL
значения представляются сначала,
если Вы делаете ORDER BY ... ASC
и продлитесь, если Вы делаете ORDER BY ... DESC
.
Распространенная ошибка, работая с NULL
должен предположить, что не возможно
вставить нуль или пустую строку в столбец, определенный как NOT NULL
, но дело
обстоит не так. Они - фактически значения, тогда как NULL
означает "не наличие значения." Можно протестировать
это достаточно легко при использовании IS [NOT] NULL
как показано:
mysql> SELECT 0 IS NULL, 0 IS NOT NULL, '' IS NULL,
'' IS NOT NULL;
+-----------+---------------+------------+----------------+| 0 IS NULL | 0 IS NOT NULL | '' IS NULL | '' IS NOT NULL |+-----------+---------------+------------+----------------+| 0 | 1 | 0 | 1 |+-----------+---------------+------------+----------------+
Таким образом полностью возможно вставить нулевую или пустую строку в a NOT NULL
столбец, как они фактически NOT NULL
. См. Раздел
C.5.5.3, "Проблемы с NULL
Значения".