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