Поле price_text хранит цены как текст, например 2, 10, 100. Аналитик написал фильтр WHERE price_text > '10' и получил странные результаты. Что нужно поменять, если сравнение должно быть числовым?

AОставить как есть: сравнение '2' > '10' корректно для чисел.
BЗаменить > на !=.
CСделать явный каст и сравнивать как число: WHERE CAST(price_text AS int) > 10.
DСделать WHERE LOWER(price_text) > '10'.
Правильный ответ. Сравнение текстов и чисел — разные операции: для числовой логики нужен явный каст.

Разбор

Текст сравнивается лексикографически, поэтому '100' может вести себя не так, как число 100. Если поле хранится как текст, аналитик должен явно привести его к числовому типу через CAST или ::type. Тогда WHERE начнет работать в соответствии с бизнес-смыслом.

Проверь себя · 1/3разбор после ответа
Вы строите список уникальных email для рассылки и хотите: (1) убрать пробелы по краям, (2) привести все email к нижнему регистру. Какое выражение лучше использовать как нормализованный ключ?
Тренировать SQL в Telegram

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