IN, BETWEEN, LIKE и NULL
048 мин
С = и > можно сделать многое, но для коротких и точных условий в SQL есть ещё четыре полезных инструмента.
IN — одно из списка
Вместо нескольких OR:
Это то же самое, что city = 'Buxoro' OR city = 'Navoiy' OR city = 'Urganch', только короче. Обратное — NOT IN.
BETWEEN — в диапазоне
BETWEEN a AND b включает границы, то есть это >= a AND <= b. Работает и для дат:
LIKE — поиск по шаблону
%— любое количество символов (в том числе ни одного);_— ровно один символ.
| Шаблон | Значение |
|---|---|
'A%' |
начинается на A |
'%ova' |
заканчивается на «ova» |
'%bek%' |
содержит «bek» |
'_a%' |
вторая буква — «a» |
В PostgreSQL LIKE различает регистр: 'a%' не найдёт «Aziz». Для поиска без учёта регистра есть ILIKE: WHERE first_name ILIKE 'a%'.
NULL — значения нет
NULL означает «неизвестно» или «не заполнено». Например, у некоторых студентов не указан телефон. NULL ничему не равен — даже самому себе! Поэтому = NULL не работает:
Правильно — IS NULL и IS NOT NULL.
Выведите name и brand товаров брендов «Apple», «Samsung» или «Xiaomi» из таблицы products.
Выведите name и price товаров с ценой от 1 000 000 до 3 000 000 включительно.
Выведите first_name и phone покупателей, у которых не указан e-mail.
Запомните
IN (…)— одно из списка;BETWEEN a AND b— диапазон с границами.LIKE:%— любые символы,_— один символ.- С
NULLработают толькоIS NULL/IS NOT NULL.