- Подробности
-
Категория: PHP. Базы данных
Обработка значения NULL
В синтаксисе SQL значение NULL занимает особое место — оно соответствует понятию “ничего”. Значение NULL не равно пустой строке или нулю, и эта особенность часто порождает ошибки. Рассмотрим несколько примеров:
SELECT NULL=FALSE;
SELECT NULL='';
SELECT NULL=0;
SELECT NULL=NULL;
NULL значения
Результатом всех запросов будет NULL. Это может выглядеть странно, но значение NULL не является значением в полном смысле слова: по определению оно означает отсутствие значения и не принадлежит ни одному типу данных. Поэтому NULL не равно ни логическому значению FALSE, ни пустой строке, ни нулю. При сравнении NULL с любым значением будет получен результат NULL, а не FALSE и не 0. Более того, NULL не равно NULL, и это иллюстрирует последний из приведенных запросов.
Если вы работаете со столбцом, в котором могут присутствовать значения NULL, необходимо учитывать следующее: нельзя использовать запросы вида
SELECT * FROM some_table WHERE some_column = NULL;
SELECT * FROM some_table WHERE some_column != NULL;
Такие запросы не вернут ни одной строки. Используйте запросы вида
SELECT * FROM some_table WHERE some_column IS NULL;
SELECT * FROM some_table WHERE some_column IS NOT NULL;