В discount_text скидка хранится как текст, но иногда значение отсутствует и записано как '' или ' '. Вы хотите получить discount_int, где пропуски становятся NULL, и не ловить ошибку каста. Какое выражение лучше всего подходит?
A
CAST(discount_text AS int)B
TRIM(discount_text)::intC
CAST(NULLIF(TRIM(discount_text), '') AS int)D
LOWER(discount_text)::intПравильный ответ. Паттерн
CAST(NULLIF(TRIM(x), '') AS int) часто используют для устойчивого каста текста в число.Разбор
Пустые строки и строки из пробелов — частый «заменитель NULL» в сырых данных. TRIM убирает пробелы по краям, NULLIF(..., '') превращает пустую строку в NULL, а затем каст уже безопаснее. Это снижает количество падений запросов при агрегациях и витринах.
Проверь себя · 1/3разбор после ответа
В таблице
customers поле lifetime_value_text хранится как текст. Вы делаете топ клиентов по выручке, но сортировка выглядит неверно (например, 100 идёт раньше 20). Как исправить ORDER BY?Ещё вопросы по теме «Строки и приведение типов»
- У вас есть таблицы `users(email)` и `marketing_signups(email)`. В одной системе email сохраняется как `Ivan@Example.com`, в другой — `ivan@example.com`. Какой подход в `JOIN` чаще всего решает проблему без изменения данных в таблицах?
- В таблице `products` категория хранится как `Books`, `books`, `BOOKS`. Вы хотите отфильтровать все варианты категории «books» в одном запросе. Какое условие в `WHERE` наиболее надежно?
- В отчёте по городам вы делаете агрегацию по `city`, но видите две строки: `Moscow` и `Moscow ` (с пробелом в конце). Как исправить это прямо в запросе?
- Поле `price_text` хранит цены как текст, например `2`, `10`, `100`. Аналитик написал фильтр `WHERE price_text > '10'` и получил странные результаты. Что нужно поменять, если сравнение должно быть числовым?
- В `amount_text` суммы записаны как текст, но иногда встречается пустая строка `''`. Запрос `SUM(CAST(amount_text AS int))` падает. Какое выражение чаще всего решает проблему, превращая пустые строки в `NULL` перед кастом?
- Все вопросы по «Строки и приведение типов» →