Для чего используются операторы IN, BETWEEN, LIKE?
Эти три оператора используются в WHERE для фильтрации строк по различным критериям: принадлежность к набору, попадание в диапазон и соответствие шаблону.
IN — принадлежность к набору
Определяет, входит ли значение в указанный список. Может принимать как явный список значений, так и подзапрос.
Пример
SELECT * FROM persons WHERE name IN ('Ivan', 'Petr', 'Pavel');
-- С подзапросом
SELECT * FROM employees WHERE department_id IN (
SELECT id FROM departments WHERE location = 'Moscow'
);
BETWEEN — попадание в диапазон
Определяет, находится ли значение в указанном диапазоне, включая обе границы. Чувствителен к порядку: первое значение должно быть меньше второго.
Пример
SELECT * FROM persons WHERE age BETWEEN 20 AND 25;
-- Эквивалентно: WHERE age >= 20 AND age <= 25
LIKE — поиск по шаблону
Применяется к строковым столбцам (CHAR, VARCHAR) для поиска подстрок с использованием символов шаблонизации (wildcards):
| Символ | Значение | Пример | Совпадает | Не совпадает |
|---|---|---|---|---|
_ |
Один любой символ | 'b_t' |
'bat', 'bit' |
'brat' |
% |
Любое количество символов | '%p%t' |
'put', 'posit' |
'spite' |
Пример
-- Имена, оканчивающиеся на 'o'
SELECT * FROM university WHERE name LIKE '%o';
-- Имена длиной ровно 4 символа
SELECT * FROM university WHERE name LIKE '____';
В PostgreSQL для регистронезависимого поиска используется ILIKE вместо LIKE.
На собеседовании: перечислите все три оператора с примерами. Частая ошибка — забыть, что
BETWEENвключает обе границы, и не знать разницу между_и%вLIKE.