В таблице imports столбец amount_text хранит числа в текстовом виде ("100.50", "200"). Что произойдёт при выполнении SELECT CAST(amount_text AS NUMERIC) FROM imports, если часть значений содержит буквы ("N/A")?
AЗапрос вернёт
NULL для строк с буквами, а корректные числа преобразует в NUMERIC без проблемBЗапрос вернёт
0 для нечисловых строк, потому что CAST подставляет ноль вместо ошибочных значенийCЗапрос завершится ошибкой на первой же строке, где значение нельзя интерпретировать как число
DЗапрос пропустит проблемные строки и вернёт результат только по тем, что успешно преобразовались
Правильный ответ.
CAST выполняет строгое преобразование и падает с ошибкой, если значение нельзя интерпретировать как требуемый тип.Разбор
Конструкция CAST(value AS type) пытается строго преобразовать каждое значение в указанный тип. Для строк вроде "100.50" преобразование в NUMERIC пройдёт успешно. Но если встретится значение "N/A", которое нельзя интерпретировать как число, запрос завершится ошибкой и не вернёт ни одной строки. Для безопасного приведения в PostgreSQL пишут CASE WHEN ... THEN CAST(...) или используют функции вроде to_number с проверкой формата.
Проверь себя · 1/3разбор после ответа
Нужно выбрать заказы за декабрь 2025 из таблицы заказов по полю
created_at с временем. Какой фильтр надёжнее задаёт диапазон «весь месяц» без потерь по краям?Ещё вопросы по теме «Основы SQL-запросов»
- В таблице `users` нужно выбрать только активных пользователей из России или Казахстана. Какой `WHERE` соответствует требованию?
- Для отчёта по регистрациям нужны только идентификатор пользователя `user_id` и дата `signup_at` из таблицы пользователей. Какой запрос лучше соответствует задаче и не тянет лишние поля?
- Нужно получить 20 самых новых событий из таблицы `events` (по времени `event_time`) и показать их в выдаче сверху. Какой запрос верный?
- Вы строите выдачу «последние заказы» и используете `LIMIT 50`. Поле `created_at` не уникально (много заказов в одну секунду). Какой `ORDER BY` лучше, чтобы порядок был детерминированным?
- Что можно корректно утверждать про результат запроса `SELECT user_id FROM users LIMIT 10`, если в нём нет `ORDER BY`?
- Все вопросы по «Основы SQL-запросов» →