Выбор ответа Junior Тестирование БД через SQL спрашивают часто обновлено

Поиск пустых значений

Вопрос

Нужно найти пользователей, у которых не заполнено deleted_at. Какой запрос правильный?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: SELECT id FROM users WHERE deletedat IS NULL;. Сравнение с NULL через = даёт unknown, и WHERE не вернёт ни одной строки: тест молча пройдёт на пустом результате.

Варианты ответа

  1. SELECT id FROM users WHERE deleted_at = NULL::timestamp;
  2. SELECT id FROM users WHERE deleted_at = '';
  3. SELECT id FROM users WHERE deleted_at IS NULL;правильный ответ
  4. SELECT id FROM users WHERE NOT deleted_at;

Разбор

Сравнение с NULL через = даёт unknown, и WHERE не вернёт ни одной строки: тест молча пройдёт на пустом результате. Пустая строка это значение, а не NULL, для колонки с датой такое сравнение вообще ошибка. NOT deleted_at не работает для timestamp.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме