Spec-Zone .ru
спецификации, руководства, описания, API

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 значения расцениваются как равные в 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 Значения".