Spec-Zone.ru › MySQL 5.7

3.3.4.6 Работа с значениями NULL

Значение 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 считаются равными в 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 |
+-----------+---------------+------------+----------------+

Таким образом, вставить ноль или пустую строку в столбец типа NOT NULL вполне возможно, так как они, на самом деле, являются NOT NULL. См. Раздел B.3.4.3, «Проблемы со значениями NULL».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/working-with-null.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API