Выбор ответа Junior Тестирование БД через SQL спрашивают часто обновлено
Поиск пустых значений
Вопрос
Нужно найти пользователей, у которых не заполнено deleted_at. Какой запрос правильный?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: SELECT id FROM users WHERE deletedat IS NULL;. Сравнение с NULL через = даёт unknown, и WHERE не вернёт ни одной строки: тест молча пройдёт на пустом результате.
Варианты ответа
SELECT id FROM users WHERE deleted_at = NULL::timestamp;SELECT id FROM users WHERE deleted_at = '';SELECT id FROM users WHERE deleted_at IS NULL;правильный ответSELECT id FROM users WHERE NOT deleted_at;
Разбор
Сравнение с NULL через = даёт unknown, и WHERE не вернёт ни одной строки: тест молча пройдёт на пустом результате. Пустая строка это значение, а не NULL, для колонки с датой такое сравнение вообще ошибка. NOT deleted_at не работает для timestamp.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.