Короткий ответ
Нужно использовать оператор LIKE с шаблоном WHERE email LIKE '%@gmail.com', где % обозначает любую последовательность символов до искомой подстроки.
Как это работает подробнее
LIKE сравнивает строку с шаблоном, где % заменяет любое количество (в том числе ноль) произвольных символов, а _ — ровно один символ. По умолчанию в большинстве СУБД LIKE чувствителен к регистру (в PostgreSQL для нечувствительного поиска есть ILIKE).
Пример кода
Запрос SQL
SELECT *
FROM customers
WHERE email ILIKE '%@gmail.com';Что использовать на практике
- На практике: шаблон
'%@gmail.com'найдёт email, заканчивающиеся именно на этот домен, но не отличит реальный домен от строки, которая просто содержит эту подстроку в другом месте, если убрать%в конце. Для больших таблиц поиск с%в начале шаблона (LIKE '%gmail%') обычно не может использовать обычный B-tree индекс эффективно и может быть медленным. - Результат: Результат — все клиенты с почтой на gmail.com независимо от регистра.
- Проверка: вручную просмотреть 5-10 строк результата и убедиться, что домен действительно gmail.com, а не похожая подстрока.
Подводные камни
- Частая ошибка: используют
LIKE 'gmail.com%'(без%в начале), что ищет email, начинающиеся с «gmail.com», а не заканчивающиеся на него; не учитывают регистр букв в доменах, если СУБД чувствительна к регистру.