В amount_text суммы записаны как текст, но иногда встречается пустая строка ''. Запрос SUM(CAST(amount_text AS int)) падает. Какое выражение чаще всего решает проблему, превращая пустые строки в NULL перед приведением типа?

ASUM(CAST(amount_text AS int)) без обработки пустых строк, как в исходном запросе
BSUM(CAST(NULLIF(TRIM(amount_text), '') AS int)) с обрезкой пробелов и заменой пустых на NULL
CSUM(CAST(TRIM(amount_text) AS int)) только с обрезкой пробелов без обработки пустых
DSUM(CAST(LOWER(amount_text) AS int)) с приведением к нижнему регистру перед CAST
Правильный ответ. Перед CAST удобно превращать пустые строки в NULL через NULLIF и убирать пробелы через TRIM.

Разбор

CAST('' AS int) обычно приводит к ошибке. Частый паттерн для аналитики — сначала очистить значение TRIM(...), затем заменить пустую строку на NULL через NULLIF(..., ''), и только потом приводить тип. Так агрегации вроде SUM(...) становятся устойчивее к «грязным» данным.

Проверь себя · 1/3разбор после ответа
В таблице customers поле lifetime_value_text хранится как текст. Сортировка ORDER BY lifetime_value_text DESC даёт 100 раньше 20. Как получить корректный порядок по величине выручки?
Тренировать SQL в Telegram

Ещё вопросы по теме «Строки и приведение типов»