Специальные операторы в условиях
В этом уроке вы познакомитесь с несколькими операторами, которые упростят отбор данных в полях разных типов: числовых, символьных и не только.
Оператор IN
В прошлом уроке вы выполняли задание, в котором отбирали записи по трём городам. А если городов станет больше — например шесть?
SQL
Выглядит громоздко, а ещё такой запрос долго писать. Избежать таких конструкций можно с помощью оператора
IN. Значения, по которым нужно фильтровать данные, перечисляют в скобках:SQL
Оператор LIKE
Если названия городов указаны без ошибок, отфильтровать нужные данные не так сложно. А если поле хранит адреса электронной почты, как отобрать данные по домену? Перечисление всех адресов с нужным доменом займёт много времени.
В SQL можно получить срез не только по конкретному значению, но и по шаблону. Для этого используют оператор
LIKE, а с помощью знака % показывают, какую позицию в строке занимает шаблон. Обратите внимание, что оператор
LIKE ищет не слова, а символы в строке. Если шаблон короткий, результат не всегда может быть ожидаемым. Поиск по шаблону учитывает и регистр, поэтому условие
WHERE quotes LIKE 'Кот%' найдёт строку 'Коту подарили миску', а строку 'коту подарили рыбу' оставит без внимания. Отобрать записи, в которых, напротив, нет конкретных символов, можно конструкцией
NOT LIKE. Шаблоны для поиска нужно указывать по тем же принципам, что и для оператора LIKE. Например, условие WHERE quotes NOT LIKE 'кот%' исключит строку 'кот играет с собакой'.Оператор BETWEEN
Теперь можно искать не только по конкретному значению, но и по шаблону. Другая распространённая задача — найти значения из диапазона. Для этого используют оператор
BETWEEN. Границы диапазона указывают так: WHERE ключевое слово BETWEEN начало диапазона AND конец диапазона. Начало и конец диапазона включены в проверку условием.Такой запрос выгрузит из таблицы
invoice все записи, в которых идентификаторы покупателей находятся в диапазоне от 23 до 48 включительно: SQL
Оператор
BETWEEN можно использовать, чтобы задать промежуток времени.Нужно отобрать фамилии сотрудников, родившихся в период с 1 января 1970 года по 31 декабря 1970 года. Поможет оператор
BETWEEN:SQL
Обратите внимание, что значения даты указывают в одинарных кавычках, как в случае с символьными типами.