Gymterview
junior

Для чего используются операторы 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.