Поле age_text хранится как текст и иногда содержит пробелы, например 18. Вы хотите отобрать пользователей 18+ через WHERE. Какой вариант наиболее корректен?

AWHERE age_text >= 18
BWHERE LOWER(age_text) >= '18'
CWHERE CAST(TRIM(age_text) AS int) >= 18
DWHERE TRIM(age_text) >= 18
Правильный ответ. Если сравнение должно быть числовым, приводите к числовому типу после простой очистки строки.

Разбор

Сравнение строк и чисел либо даст ошибку, либо будет работать не так, как вы ожидаете. Если возраст хранится текстом, надежнее сначала убрать лишние пробелы TRIM(...), а затем привести к int через CAST. Тогда WHERE ... >= 18 будет числовым и понятным.

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

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