В таблице users адрес электронной почты хранится в разном регистре: Anna@mail.ru, anna@MAIL.ru и т.д. Как надёжнее всего найти все записи с конкретным адресом вне зависимости от регистра?
AПрименить
UPPER(email) в WHERE и сравнивать с верхним регистром искомого адресаBИспользовать
TRIM(email) в WHERE для удаления пробелов и приведения к единому региструCПрименить
LOWER(email) в WHERE и сравнивать с нижним регистром искомого адресаDПеречислить через
OR все возможные варианты регистра написания искомого адресаПравильный ответ. Функции
LOWER и UPPER приводят строку к единому регистру и позволяют сравнивать значения без учёта регистра.Разбор
Чтобы сравнение не зависело от того, какие буквы заглавные, удобно привести обе стороны к одному регистру: WHERE LOWER(email) = LOWER('anna@mail.ru'). Перечисление всех возможных вариантов написания через OR ненадёжно: количество комбинаций растёт экспоненциально с длиной строки, легко что-то пропустить. Функция TRIM убирает пробелы по краям, но не меняет регистр букв. На больших таблицах для ускорения такого поиска можно создать функциональный индекс по LOWER(email).
Можно заниматься бесплатно
Готовим вопросы…
Три вопроса по теме этой страницы, с объяснениями.
Ещё вопросы по теме «Основы SQL-запросов»
- В таблице `users` нужно выбрать только активных пользователей из России или Казахстана. Какой `WHERE` соответствует требованию?
- Для отчёта по регистрациям нужны только идентификатор пользователя `user_id` и дата `signup_at` из таблицы пользователей. Какой запрос лучше соответствует задаче и не тянет лишние поля?
- Нужно получить 20 самых новых событий из таблицы `events` (по времени `event_time`) и показать их в выдаче сверху. Какой запрос верный?
- Вы строите выдачу «последние заказы» и используете `LIMIT 50`. Поле `created_at` не уникально (много заказов в одну секунду). Какой `ORDER BY` лучше, чтобы порядок был детерминированным?
- Что можно корректно утверждать про результат запроса `SELECT user_id FROM users LIMIT 10`, если в нём нет `ORDER BY`?
- Все вопросы по «Основы SQL-запросов» →