← Все вопросы

Что такое NULL в SQL и как проверить пустую ячейку?

Задан 1 месяц назад565 просмотров2 ответа
7

У некоторых строк в столбце вместо значения написано NULL. Это что, ноль или пустая строка? И почему WHERE age = NULL ничего не находит, хотя пустые ячейки точно есть? Запутался.

2 ответа

12
✓ Принятый ответ — помог автору

NULL — это «нет значения», пустая, незаполненная ячейка. Важно: это НЕ ноль и НЕ пустая строка ''. Это «мы не знаем / не указано».

Например, у нового ученика ещё не записали возраст — там будет NULL.

Теперь про твою ошибку. С NULL нельзя сравнивать через =, потому что «неизвестно = неизвестно» — это не «истина», это тоже неизвестность. Поэтому WHERE age = NULL не сработает.

Правильно — через IS NULL / IS NOT NULL:

-- у кого возраст не указан
SELECT * FROM students WHERE age IS NULL;

-- у кого возраст указан
SELECT * FROM students WHERE age IS NOT NULL;

Запомни правило: для NULL — только IS NULL / IS NOT NULL, а не = и <>.

4

Лайфхак для понимания: считай, что NULL — это «знак вопроса». 5 > ? — непонятно, истина это или нет. Поэтому любые сравнения с NULL дают не «да» и не «нет», а «неизвестно», и строка просто не попадает в результат.

Ваш ответ

Войдите, чтобы ответить на вопрос.